@cimplify/cli 0.7.4 → 0.7.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{add-4PBCFGM3.mjs → add-JHVJ5RGL.mjs} +1 -1
- package/dist/{chunk-NTY7JESF.mjs → chunk-6CIWEADS.mjs} +2 -2
- package/dist/{chunk-LRTPNNQG.mjs → chunk-HGFCYWS2.mjs} +1 -1
- package/dist/{chunk-QOPMMTVI.mjs → chunk-NOMGIGNO.mjs} +9 -9
- package/dist/dispatcher.mjs +9 -9
- package/dist/{doctor-ZVYWEE53.mjs → doctor-YC7H2JXR.mjs} +2 -2
- package/dist/{explain-S6S33HPN.mjs → explain-YRRYXXE2.mjs} +2 -2
- package/dist/{introspect-FFB7TA2E.mjs → introspect-2HEJ7EGB.mjs} +2 -2
- package/dist/{list-RLWFTEP4.mjs → list-FCWEQPDR.mjs} +1 -1
- package/dist/{update-WH6NDWIM.mjs → update-GVWXFVB3.mjs} +1 -1
- package/package.json +2 -2
- package/templates/storefront-auto/package.json +1 -1
- package/templates/storefront-bakery/components/signed-out-prompt.tsx +32 -0
- package/templates/storefront-bakery/package.json +1 -1
- package/templates/storefront-fashion/package.json +1 -1
- package/templates/storefront-grocery/package.json +1 -1
- package/templates/storefront-pharmacy/package.json +1 -1
- package/templates/storefront-restaurant/package.json +1 -1
- package/templates/storefront-retail/package.json +1 -1
- package/templates/storefront-services/package.json +1 -1
|
@@ -671,7 +671,7 @@ export const brand: Brand = {
|
|
|
671
671
|
* the root layout prerenderable.
|
|
672
672
|
*/
|
|
673
673
|
export const SITE_URL = "https://example.com";
|
|
674
|
-
` }, { "path": "lib/site-url.ts", "kind": "text", "content": 'import { SITE_URL } from "./site.config";\n\n/** Canonical absolute URL for this storefront. */\nexport async function getSiteUrl(): Promise<string> {\n return SITE_URL;\n}\n' }, { "path": "lib/cimplify-loader.ts", "kind": "text", "content": 'import type { ImageLoader } from "next/image";\n\nimport { assetUrl, isCimplifyAsset } from "@cimplify/sdk";\n\nconst cdnBase = process.env.NEXT_PUBLIC_CIMPLIFY_CDN_URL?.trim() || undefined;\n\nconst cimplifyImageLoader: ImageLoader = ({ src, width, quality }) => {\n if (isCimplifyAsset(src, cdnBase)) {\n return assetUrl(src, {\n base: cdnBase,\n w: width,\n quality,\n format: "auto",\n });\n }\n return src;\n};\n\nexport default cimplifyImageLoader;\n' }, { "path": "lib/cart.ts", "kind": "text", "content": '"use client";\n\nimport { useCart } from "@cimplify/sdk/react";\n\n/**\n * Reactive cart count for the header pill. Subscribes to the SDK cart\n * state \u2014 updates immediately on add / remove / quantity change.\n */\nexport function useCartCount(): { count: number } {\n const { itemCount } = useCart();\n return { count: itemCount };\n}\n' }, { "path": ".gitignore", "kind": "text", "content": "node_modules\n.next\n.open-next\nout\n.env\n.env.local\n.env*.local\n.DS_Store\n*.tsbuildinfo\nnext-env.d.ts\n" }, { "path": "package.json", "kind": "text", "content": '{\n "name": "__STOREFRONT_NAME__",\n "private": true,\n "version": "0.0.0",\n "scripts": {\n "dev": "concurrently -k -n mock,next -c blue,magenta \\"cimplify-mock --seed retail --quiet\\" \\"next dev\\"",\n "dev:storefront": "next dev",\n "dev:mock": "cimplify-mock --seed retail",\n "build": "next build",\n "start": "next start",\n "typecheck": "tsc --noEmit",\n "test": "vitest",\n "test:run": "vitest run",\n "check:brand": "vitest run __tests__/brand.test.ts",\n "check:cart": "vitest run __tests__/cart-flow.test.ts",\n "check:contract": "vitest run __tests__/contract.test.ts",\n "check": "bun run typecheck && bun run test:run"\n },\n "dependencies": {\n "@cimplify/sdk": "^0.56.0",\n "next": "^16.2.6",\n "react": "^19.0.0",\n "react-dom": "^19.0.0"\n },\n "devDependencies": {\n "@tailwindcss/postcss": "^4.2.4",\n "@types/node": "^22.10.0",\n "@types/react": "^19.0.0",\n "@types/react-dom": "^19.0.0",\n "concurrently": "^9.0.0",\n "tailwindcss": "^4.2.4",\n "typescript": "^5.9.3",\n "vitest": "^4.1.5"\n }\n}\n' }, { "path": "bun.lock", "kind": "binary", "content": "ewogICJsb2NrZmlsZVZlcnNpb24iOiAxLAogICJjb25maWdWZXJzaW9uIjogMSwKICAid29ya3NwYWNlcyI6IHsKICAgICIiOiB7CiAgICAgICJuYW1lIjogIl9fU1RPUkVGUk9OVF9OQU1FX18iLAogICAgICAiZGVwZW5kZW5jaWVzIjogewogICAgICAgICJAY2ltcGxpZnkvc2RrIjogIl4wLjU0LjAiLAogICAgICAgICJuZXh0IjogIl4xNi4yLjYiLAogICAgICAgICJyZWFjdCI6ICJeMTkuMC4wIiwKICAgICAgICAicmVhY3QtZG9tIjogIl4xOS4wLjAiLAogICAgICB9LAogICAgICAiZGV2RGVwZW5kZW5jaWVzIjogewogICAgICAgICJAdGFpbHdpbmRjc3MvcG9zdGNzcyI6ICJeNC4yLjQiLAogICAgICAgICJAdHlwZXMvbm9kZSI6ICJeMjIuMTAuMCIsCiAgICAgICAgIkB0eXBlcy9yZWFjdCI6ICJeMTkuMC4wIiwKICAgICAgICAiQHR5cGVzL3JlYWN0LWRvbSI6ICJeMTkuMC4wIiwKICAgICAgICAiY29uY3VycmVudGx5IjogIl45LjAuMCIsCiAgICAgICAgInRhaWx3aW5kY3NzIjogIl40LjIuNCIsCiAgICAgICAgInR5cGVzY3JpcHQiOiAiXjUuOS4zIiwKICAgICAgICAidml0ZXN0IjogIl40LjEuNSIsCiAgICAgIH0sCiAgICB9LAogIH0sCiAgInBhY2thZ2VzIjogewogICAgIkBhbGxvYy9xdWljay1scnUiOiBbIkBhbGxvYy9xdWljay1scnVANS4yLjAiLCAiIiwge30sICJzaGE1MTItVXJjQUJCKzRiVXJGQUJ3Ymx1VElCRXJYd3Zic1UvVjdUWldmbWJnSmZia3dpQnV6aVM5Z3hkT0RVeXVpZWNmZEdRODVqZ2xNVzZqdVMzK3o1VHNLTHc9PSJdLAoKICAgICJAYmFiZWwvcnVudGltZSI6IFsiQGJhYmVsL3J1bnRpbWVANy4yOS4yIiwgIiIsIHt9LCAic2hhNTEyLUppRFNoSDQ1ektIV3lHZTRaTlZSckNqQno4Tmg5VE1tWkcxa2g0UVRLOGhDQlRXQmk4RGEraTdzMWZKdzcvbFlwTTRjY2VwU05mcXpaL1F2QUJCaTVnPT0iXSwKCiAgICAiQGJhc2UtdWkvcmVhY3QiOiBbIkBiYXNlLXVpL3JlYWN0QDEuNS4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBiYWJlbC9ydW50aW1lIjogIl43LjI5LjIiLCAiQGJhc2UtdWkvdXRpbHMiOiAiMC4yLjkiLCAiQGZsb2F0aW5nLXVpL3JlYWN0LWRvbSI6ICJeMi4xLjgiLCAiQGZsb2F0aW5nLXVpL3V0aWxzIjogIl4wLjIuMTEiLCAidXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUiOiAiXjEuNi4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBkYXRlLWZucy90eiI6ICJeMS4yLjAiLCAiQHR5cGVzL3JlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgImRhdGUtZm5zIjogIl40LjAuMCIsICJyZWFjdCI6ICJeMTcgfHwgXjE4IHx8IF4xOSIsICJyZWFjdC1kb20iOiAiXjE3IHx8IF4xOCB8fCBeMTkiIH0sICJvcHRpb25hbFBlZXJzIjogWyJAZGF0ZS1mbnMvdHoiLCAiQHR5cGVzL3JlYWN0IiwgImRhdGUtZm5zIl0gfSwgInNoYTUxMi16MWdTQWxjZWQxeVkraU0rbUhERXRJa0Q4VUkzRWJzNTJNdUJQeHZWNmY1aFJ1dGsreHZDSC93dUI3aERxRHpLOUpHNUZvTXo1bmhycXRTczF3anQxQT09Il0sCgogICAgIkBiYXNlLXVpL3V0aWxzIjogWyJAYmFzZS11aS91dGlsc0AwLjIuOSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYmFiZWwvcnVudGltZSI6ICJeNy4yOS4yIiwgIkBmbG9hdGluZy11aS91dGlscyI6ICJeMC4yLjExIiwgInJlc2VsZWN0IjogIl41LjEuMSIsICJ1c2Utc3luYy1leHRlcm5hbC1zdG9yZSI6ICJeMS42LjAiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL3JlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgInJlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgInJlYWN0LWRvbSI6ICJeMTcgfHwgXjE4IHx8IF4xOSIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkB0eXBlcy9yZWFjdCJdIH0sICJzaGE1MTIteC9QRERDWXpvcVBwanJkeWIzVmN5eWxUSTJJalVYRXRZREdpNWZvaDdLc25tTkpJSWFWd0EyR0xnREgxZHBzMUdnWGlKYkE2MGhNK0F5dVRmUXpJdnc9PSJdLAoKICAgICJAY2ltcGxpZnkvc2RrIjogWyJAY2ltcGxpZnkvc2RrQDAuNTQuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYmFzZS11aS9yZWFjdCI6ICJeMS40LjEiLCAiY2xzeCI6ICJeMi4xLjEiLCAiZGF0ZS1mbnMiOiAiXjQuMS4wIiwgImxpYnBob25lbnVtYmVyLWpzIjogIjEuMTIuNDEiLCAicmVhY3QtZGF5LXBpY2tlciI6ICJeOS4xNC4wIiwgInRhaWx3aW5kLW1lcmdlIjogIl4zLjUuMCIsICJ6b2QiOiAiXjQuNC4zIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBwYXlzdGFjay9pbmxpbmUtanMiOiAiXjIuMjIuOCIsICJtc3ciOiAiPj0yLjAuMCIsICJyZWFjdCI6ICI+PTE3LjAuMCIsICJ2aXRlc3QiOiAiPj0yLjAuMCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkBwYXlzdGFjay9pbmxpbmUtanMiLCAibXN3IiwgInJlYWN0IiwgInZpdGVzdCJdLCAiYmluIjogeyAiY2ltcGxpZnktbW9jayI6ICJkaXN0L21vY2svY2xpLm1qcyIgfSB9LCAic2hhNTEyLVlVTi9sT3FWaUhjaTF2OVVTV1d3QVd0eTI5cEVYQmRMVHVLYXJTbDhFcGFmV2g1amtkR1oxUStOZTkvYmZnVFptUjhpVFVsdEE4VTdnbFYyRm9SU2dnPT0iXSwKCiAgICAiQGRhdGUtZm5zL3R6IjogWyJAZGF0ZS1mbnMvdHpAMS40LjEiLCAiIiwge30sICJzaGE1MTItUDVMVU5odGJqNllmSTNpSmp3NUVMOWVVQUc2T2l0RDBXM2ZXUWNwUWpEUmMvUUlzTDB0Uk51TzFQY0R2UGNjV0wxZlNUWFhkRTFkcytsOTVEVi9PRkE9PSJdLAoKICAgICJAZW1uYXBpL2NvcmUiOiBbIkBlbW5hcGkvY29yZUAxLjEwLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGVtbmFwaS93YXNpLXRocmVhZHMiOiAiMS4yLjEiLCAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTIteXE2T2tKNHA4MkNBZlBsMHU5bVFlYlFIS1BKa1k3V3JJdWsyMDVjVFluWWUrazJaOFlCaDExRnJiUkcvSDZpaGlycWNhY09nbDJCSU84b3lNUUxlWHc9PSJdLAoKICAgICJAZW1uYXBpL3J1bnRpbWUiOiBbIkBlbW5hcGkvcnVudGltZUAxLjEwLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTItZXd2WWxrODZ4VW9HSTB6UVJOcS9tQysxNlIxUWVEbEtReTIxS2kzb1NZWE5nTGI0NUdWMVA2QTBNKy9zNm55Q3VORHFlNVZwYVk4NEJ6WEd3VmJ3RkE9PSJdLAoKICAgICJAZW1uYXBpL3dhc2ktdGhyZWFkcyI6IFsiQGVtbmFwaS93YXNpLXRocmVhZHNAMS4yLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTItdVRJSTdPWUYrL01lcy9NcmNJT1lwNXlPdFNNTEJXU0lvTFBwY2d3aXBvaUtibGk2azMyMnRjb0ZzeG9JSXhQRHFXMDFTUUdBZ2tvNEV6WmkyQk52Mnc9PSJdLAoKICAgICJAZXNidWlsZC9haXgtcHBjNjQiOiBbIkBlc2J1aWxkL2FpeC1wcGM2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYWl4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi0xVkNJQ1d5cGVRS2hWYkU5b1cvc0phQW1qTHhoVnFhY2RrdlBMRWp3bHR0amZ3RU5SU0NsUzhFakJ6MEt6UnlGU0NQRElrdVhXMzRKZS92azd6ZEI3UT09Il0sCgogICAgIkBlc2J1aWxkL2FuZHJvaWQtYXJtIjogWyJAZXNidWlsZC9hbmRyb2lkLWFybUAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtIiB9LCAic2hhNTEyLVFOZFFFcHM3RGZGd0UzaFhpVTRCWmVPVjY4SEh6WXdHZDBOdGhoZDN1Q2trRUtLNy9SNk1UZ00wUDdIN0ZBczVwVS9ESVdzdmlNbUVHeEVveElaK1pRPT0iXSwKCiAgICAiQGVzYnVpbGQvYW5kcm9pZC1hcm02NCI6IFsiQGVzYnVpbGQvYW5kcm9pZC1hcm02NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItYkJ5NjlwZ2ZoTUd0Q253cEMveDVRaGZ4QXovY0JnUTllbmJ0d2pmNlY5bG5QSS9oTXlUOWlXcFIxYXJtMGwza3R0VHI0TDBLU0xwS21McC9pbEtTOUE9PSJdLAoKICAgICJAZXNidWlsZC9hbmRyb2lkLXg2NCI6IFsiQGVzYnVpbGQvYW5kcm9pZC14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImFuZHJvaWQiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1UVmhkVnRRSUZ1VnBJSVIyODJidGNHQzJvR1FvU2ZaZm1CZFRpcDJhbkNhVlljcVdsWlhHY2RjS0lVa2xmWDJ3ajBKa2xOWWd6MzlPQnFoMmNxWHZjUT09Il0sCgogICAgIkBlc2J1aWxkL2Rhcndpbi1hcm02NCI6IFsiQGVzYnVpbGQvZGFyd2luLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVkxZ2lDZk00bmxIRFdFZlNja016ZVdOZFFTMzFCUUdzOS9yb3V3NlViOTF0a0s3OWFJTVRIM3E5eEh2ekg4ZDB3RHJ1NUNpMGtXQjhiM3VwL25sMTZnPT0iXSwKCiAgICAiQGVzYnVpbGQvZGFyd2luLXg2NCI6IFsiQGVzYnVpbGQvZGFyd2luLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiZGFyd2luIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItQ0pzcnk4WkdNNVZGVmV5VVlCM2NkS3BkL0g2OVBZZXo0ZUpoMVcvdDM4dnp1dGRqRWp0UDdoQjZlTEtCb09keGNBbEN0RVlIelEvUEovb1U5STR1MEE9PSJdLAoKICAgICJAZXNidWlsZC9mcmVlYnNkLWFybTY0IjogWyJAZXNidWlsZC9mcmVlYnNkLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi15WXErMzlObFRSelUyWG1vUFc0bDVJZnBsOWZxU2swbkFKWU0vVi9XVUdQRUZmZWsxZXBMSEpJa1RRTTZiQnMxc3dBcGpPNW5XZ3ZyODQzZzZUanh1UT09Il0sCgogICAgIkBlc2J1aWxkL2ZyZWVic2QteDY0IjogWyJAZXNidWlsZC9mcmVlYnNkLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiZnJlZWJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLTBGZ3ZPSjZVVU1mbHNIU1BMemRmRG5uQkJWb0NEdEJUVnluL01yV2xvVU52cS81U0ZtaDEzbDNkdmdSUGtEaWhSeGI3N1kxN01icWJDQWEyc3RyTVFRPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtYXJtIjogWyJAZXNidWlsZC9saW51eC1hcm1AMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTIta3JvNGMwUDg1R01mRllxVzRUV09wdm1GOHJGU2hiV0duckxxbHpwNFgxVE5XalJZM0pNWVVmREN0T3hQS09JWThCMFdDOEhONTFoR1A0STRoejRBYVE9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1hcm02NCI6IFsiQGVzYnVpbGQvbGludXgtYXJtNjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi0rODlVc1FUZlhkbWpJdlpTNm5Vbk9PTG9YbmtVVEI5aFI1UUFlTHJRZHpPU1dadk5TQVhBdGNSREhXdHFBVXRBbXY3Wk0xV1BPT2VTeER6enpNb2dpUT09Il0sCgogICAgIkBlc2J1aWxkL2xpbnV4LWlhMzIiOiBbIkBlc2J1aWxkL2xpbnV4LWlhMzJAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJpYTMyIiB9LCAic2hhNTEyLXlURWpvYXB5OFVQM3J2OGRCMGlwM0FmTXBSYnloU04zK2hZOG1vL2k0UVhGZUR4bWlZYkVLcDNaUmpCS2NPUDg2MlVhNGIxUERmd2x2YnV3WTdoSUdRPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtbG9vbmc2NCI6IFsiQGVzYnVpbGQvbGludXgtbG9vbmc2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItTmVxcVlrcmNHekZ3aTZDR1JHTk1PaldHR1NZT3Bxd0NqUzlmdmFVbFg1czN6d090bjFxd2cxczJpRTJzdkJlNFEvWU9HMXE2ODc1bGNBb1FLL0Y0VkE9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1taXBzNjRlbCI6IFsiQGVzYnVpbGQvbGludXgtbWlwczY0ZWxAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJub25lIiB9LCAic2hhNTEyLUljdlRsRjlkdExyZkwvTThXZ05JL3FKWUJFTlAzZWtnc0hiWVVJekV6cTVYSnp6VkVWL2ZYWTlXRlBmRUVYbXUzY2sycUpQOExHL3AzUThmN1pjMlhnPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtcHBjNjQiOiBbIkBlc2J1aWxkL2xpbnV4LXBwYzY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAicHBjNjQiIH0sICJzaGE1MTItSE95MGFMVEpUVnRvVGVHWmg0SFNYYU82TTk1cXU0azVsSmNINGd4djU2aWF5Y2Z6MVM4R08vNUpoNlg0WTFZaUkwaDdjUnlMaStIaXhNUis4OHN3YWc9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1yaXNjdjY0IjogWyJAZXNidWlsZC9saW51eC1yaXNjdjY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1pOEpVREF1ZnB6OWpPem80eUlTaENUY1h6UzA3dkVnV3p5WDNOSDJHN0xFRlZnckxFaGp3TDNhakZFNGZaSTNJNFpnaU03SkgzR1E3UmVPYlJPdlNVQT09Il0sCgogICAgIkBlc2J1aWxkL2xpbnV4LXMzOTB4IjogWyJAZXNidWlsZC9saW51eC1zMzkweEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogInMzOTB4IiB9LCAic2hhNTEyLWpGbnUrNlViTGx6SWpQUXBXQ05oNVF0cmNOZk1MamdJYXZud1BRQWZvR3g0cTE3b2NPVTlNc1EyUVZ2Rnh3UW9XcFpUOER2VExvb1R2bU9RWGtPNTFnPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgteDY0IjogWyJAZXNidWlsZC9saW51eC14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItNmUwY3ZYd3pPblZXSkhxK21za1A4RE5TcktCcjFiVUxCdm5GTHBjMUtZK2QraXJaU2daMDJUR3NlNUZzYWZLUzVqZzJlNHBidks2VFBYYUYvQTYrQ0E9PSJdLAoKICAgICJAZXNidWlsZC9uZXRic2QtYXJtNjQiOiBbIkBlc2J1aWxkL25ldGJzZC1hcm02NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibm9uZSIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItdlVua0JZeFpXNGhML2llOTFoU3FhU05qdWxPbllYRTFWU0x1c252SGcydTNqZXdKQnozWXpCOStvQ3c4REFCZVZxWkdnOTR0OXR5WkZvSG1hOGdXWlE9PSJdLAoKICAgICJAZXNidWlsZC9uZXRic2QteDY0IjogWyJAZXNidWlsZC9uZXRic2QteDY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJub25lIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItWEFnOHBJUW41Q3poT0I4b2RJY0FtNDJRc09mYTk4U0JlS1VkbzR4YThPdlg4TGJNWnFFdGdlV0U5UC9XeHQ3TWxHMlFxdmpHdGhzK25xNDhUclVpS3c9PSJdLAoKICAgICJAZXNidWlsZC9vcGVuYnNkLWFybTY0IjogWyJAZXNidWlsZC9vcGVuYnNkLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJvcGVuYnNkIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1DdDJXY0ZFQU5sRkR0cDFuVkFYU05CUER4eVUrajcrdElkLy9pSFhVMmYvbE41QW1PNHpMeWhEY3BSNUN6MXIwOG1WeHp0M0pweXQ0UG1YUTFPNis3QT09Il0sCgogICAgIkBlc2J1aWxkL29wZW5ic2QteDY0IjogWyJAZXNidWlsZC9vcGVuYnNkLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAib3BlbmJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLXhBR0doeU9ROU90bTFYdThOVDFpZkdMbkE2TTNzSnhaNml4eWxiK3ZJVVZ6dnZkNkdPQUxwd1FyWXJ0bFBvdU1xZC92U2JnZWh6NkhhVms0KzdBZmh3PT0iXSwKCiAgICAiQGVzYnVpbGQvc3Vub3MteDY0IjogWyJAZXNidWlsZC9zdW5vcy14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogInN1bm9zIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItTXcrdHp5NHBwNndaRUswK0x3cjc2cFdManJ0am1KeVVCMjN0SEtxRURQNzRSM3E5NWx1WS9iWHFYWmVZbDROWWx2d09xb1JLbEluUWlhbGdDS3k2N1E9PSJdLAoKICAgICJAZXNidWlsZC93aW4zMi1hcm02NCI6IFsiQGVzYnVpbGQvd2luMzItYXJtNjRAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1BVlVQNDI4VlFUU2RkZ3V6OWRPOW5nYitFNWFTY3lnN25PZUpEckYxSFBZdTU1NWdtemEzYkRHTVBobVZYTDhzdkRTb3FQQ3NDUGpiMjY1eUcva0xLUT09Il0sCgogICAgIkBlc2J1aWxkL3dpbjMyLWlhMzIiOiBbIkBlc2J1aWxkL3dpbjMyLWlhMzJAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJpYTMyIiB9LCAic2hhNTEyLWkxc1crMWkrb1d2UXpTZ2ZSY3h4RzJrNEk5bjNPOU5ScXk4VSt1dWdhVDJEeTdrTE85WTd3STcyaGFPYWh4Y2VNWDhoWkF6Z0dvdTFGaG5kUmxkeFJnPT0iXSwKCiAgICAiQGVzYnVpbGQvd2luMzIteDY0IjogWyJAZXNidWlsZC93aW4zMi14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItbk9UMnZaTnc2aEorejQzb1AxU1BlYS9HLzZBYk42WCtiR05oTnVxOE50Ukh5NHdzTWh3NzY1SUtMTm1uamVrN0d2aldCWVE4UTVWQm9ZVEZnOXkxVVE9PSJdLAoKICAgICJAZmxvYXRpbmctdWkvY29yZSI6IFsiQGZsb2F0aW5nLXVpL2NvcmVAMS43LjUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGZsb2F0aW5nLXVpL3V0aWxzIjogIl4wLjIuMTEiIH0gfSwgInNoYTUxMi0xSWg0V1RXeXcwK2xLeUZNY0JIR2JiNVU1RnR1SEp1dWpveXlyNXpUYVdTNUVZTWVUNkpiMkF1RGVmdHNDc0V1Y2hPK21NMmlqNStxOWNyaHlkekxoUT09Il0sCgogICAgIkBmbG9hdGluZy11aS9kb20iOiBbIkBmbG9hdGluZy11aS9kb21AMS43LjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGZsb2F0aW5nLXVpL2NvcmUiOiAiXjEuNy41IiwgIkBmbG9hdGluZy11aS91dGlscyI6ICJeMC4yLjExIiB9IH0sICJzaGE1MTItOWdaU0FJNVhNMzY4ODBQUE1tLy85ZGZpRW5nWW9DNkFtMml6RVMxRkY0MDZZRnNqdnlCTW1lSjJnNFNBanUzeFd3dHV5bk5SRkwyczloZ3hwTEk1U1E9PSJdLAoKICAgICJAZmxvYXRpbmctdWkvcmVhY3QtZG9tIjogWyJAZmxvYXRpbmctdWkvcmVhY3QtZG9tQDIuMS44IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBmbG9hdGluZy11aS9kb20iOiAiXjEuNy42IiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgInJlYWN0IjogIj49MTYuOC4wIiwgInJlYWN0LWRvbSI6ICI+PTE2LjguMCIgfSB9LCAic2hhNTEyLWNDNTJiSHdNL24vQ3hTODdGSDB5V2RuZ0VacmpkdExXL3FWcnVvNjhxZytwcks3WlE0WUdkdXQyR3lEVnBvR2VBWWUvaDg5OXJWZU9WbTZPaTQwazJBPT0iXSwKCiAgICAiQGZsb2F0aW5nLXVpL3V0aWxzIjogWyJAZmxvYXRpbmctdWkvdXRpbHNAMC4yLjExIiwgIiIsIHt9LCAic2hhNTEyLVJpQi95SWg3OHBjSXhsNmxMTUcwQ2dCWEFaMlkwZVZIcU1QWXVndSs5VTBBZVQ2WUJlaUpwZjdsYmRKTkl1Z0ZQNVNJandOUmdvNERoUjFReGkyNkdnPT0iXSwKCiAgICAiQGltZy9jb2xvdXIiOiBbIkBpbWcvY29sb3VyQDEuMS4wIiwgIiIsIHt9LCAic2hhNTEyLVRkNzZxN2o1N28vdExWZGdTNzQ2Y1lBUmZTeXhrOGlFZlJ4ZXdMOWg0T016WWhiVzRUQWNwcGwwbVQ0ZXlxWGRkaDZML2p3b003NW1vN2l4YS9wQ2VRPT0iXSwKCiAgICAiQGltZy9zaGFycC1kYXJ3aW4tYXJtNjQiOiBbIkBpbWcvc2hhcnAtZGFyd2luLWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiAiMS4yLjQiIH0sICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLWltdFEzV01KWGJNWTRmeGIvTmRwNkhCVE5WdFdDVUkwV2RvYnloZUdmNSthZDZ4WDhWSURPOHUyeEU0cWMvZnIwOENLRy83ZERzZUZ0bjZNNmcvcjN3PT0iXSwKCiAgICAiQGltZy9zaGFycC1kYXJ3aW4teDY0IjogWyJAaW1nL3NoYXJwLWRhcndpbi14NjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWRhcndpbi14NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1ZTkVGQUYvNEtRL1BlVzBOK3IrYVZWc29JWTAvcXh4aWtGMlNXZHArTlJrbU1CN3k5TEJaQVZxUTR5aEdDbS9IM0gyNzBPU3lrcW1RTUtMQmhCSkRFdz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjRAMS4yLjQiLCAiIiwgeyAib3MiOiAiZGFyd2luIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi16cWpqbzdSYXRGZkZvUDBNa1E1MWpmdUZaQm5WRTJwUmlheWRLSjFHL3JIWnZuc3JIQU9jUUFMSWk5c0E1Y281eGVuUWRUdWdDdnRiMWN1Zjc4VmY0Zz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4teDY0IjogWyJAaW1nL3NoYXJwLWxpYnZpcHMtZGFyd2luLXg2NEAxLjIuNCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi0xSU9kNXhmVmhsR3dYK3pYdjJOOTNrMHlNT052VWxBTnlsYkp3MWVUYWg4Sy9KdHBpMTVLQytXU2lhWC9uQm1ibTJIeFJNMWdaMG5TZGpTc3JaYkdLZz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm0iOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm1AMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybSIgfSwgInNoYTUxMi1iRkk3eGNLRkVMZGlOQ1ZvdjhlNDRJYTR1MmJ5QStsM1h0c0FqK1E4dGZDd082QlE4aURvallkdm9QTXFzS0RrdW9PbytYNkhaQTBzMHExMUFOTVE4QT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm02NCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybTY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1leGNqWDhEZnNJY0oxMHgxS3pyNFJjV2UxZWRDOVBxdURSUlB4M1lWQ3ZRditVNXA3WWluMnMzMmZ0emlrWG9qYjFQSUZjLzlNdDI4L3kraVJrbGtydz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1wcGM2NCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi1GTXV2R2lqTERZRzZsVytiL1V2eWlsVVd1NUF5dSszcjJkMVM4bm90aUdDSXlZVS83NmVpZzFVZk1ta1o3dndnT3J6S3psUWJGU3VRZmdtN0dZVVBwQT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1yaXNjdjY0IjogWyJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgtcmlzY3Y2NEAxLjIuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1vVkRiY1I0elVDMGNlODJ0ZXViU20reDZFVGl4dEtaQmgvcWJSRUlPY0kzY1VMekR5YjE4U3IvV2N5eDdOUlFlUXpPaUhUTmJaRkYxVXdQUzJzY3lHQT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1zMzkweCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXMzOTB4QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJzMzkweCIgfSwgInNoYTUxMi1xbXA5VnJ6Z1BnTW9HWnlQdnJRSHFrMDJ1eWpBMC9RclRPMjZUcWs2bDRaVjBNUFdJVzZMVGtxT0lvditKMXlFdTdNYkZRYURwd2R3SktoYkp2dVJ4UT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjRAMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi10SnhpaUxzbUhjOUF4MWJ6M29hT1lCVVJUWEdJUkRPREJxaHZlVkhvbnJISjkvK2s4OXFiTGwwYmNKbnMrZTR0NHJ2YU5CeGFFWnNGdFNmQWRxdVBydz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjRAMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLUZWUUh1d3gxSUl1Tm93OVFBYllVekorRW44S2NWbTlMazUrdUdVUUpIYVptTUVDWm1PbGl4OUhuSDduMVRSa1hNUzBwR3hJSm9rSVZCOVN1cVpHR1h3PT0iXSwKCiAgICAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4bXVzbC14NjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wteDY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItK0xweUJrN0w0NFpJWHd6L1ZZZmdsYVgvb2t4ZXpFU2M2VXhEU295bzJLczZKeGM0WTdzR2pwZ1U5czRQTWdxZ2pqMWdaQ3lsVGllTmFtcUExTUY3RGc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4LWFybSI6IFsiQGltZy9zaGFycC1saW51eC1hcm1AMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybSI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItOWRMcXN2d3RnMXV1WEJHWktzeGVtOTU5NSt1anYwc0o2Vmk4d2NUQU5TRnB3Vi9HT05hdDVlQ2t6UW8vMU82elJJa2gwbS84KzVCanJScjdqRFVTWnc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4LWFybTY0IjogWyJAaW1nL3NoYXJwLWxpbnV4LWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm02NCI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1iS1F6YUpSWS9ia1BPWHlLeDVFVnVwN3FrYW9qRUNHNk5MWXN3Z2t0T1pqYVhlY1NBZUNXaVp3d2lGZjMvWStPMUhyYXVpRTNGVnNHeEZnOGMyNHJaZz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGludXgtcHBjNjQiOiBbIkBpbWcvc2hhcnAtbGludXgtcHBjNjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0IjogIjEuMi40IiB9LCAib3MiOiAibGludXgiLCAiY3B1IjogInBwYzY0IiB9LCAic2hhNTEyLTd6em53TmFxVzZZdHNmckdHREE2QlJrSVNLQUFFMUpvMFFkcE5ZWE5NSHUyKzBkVHJQZmxUTE5rcGM4bDdNVVA1TTE2WkpjVXZ5c1ZXV3JNZWZacXVBPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eC1yaXNjdjY0IjogWyJAaW1nL3NoYXJwLWxpbnV4LXJpc2N2NjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXJpc2N2NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi01MWdKdUxQVEthN3BpWVBhVnM4R21CeW83L1U3LzdUWk9xK2NuWEpJSFpLYXZJUkhBUDc3ZTNOMkhFbDNkZ2lxZEQvdzB5VWZpSm5JSTc3UHVEREZkdz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGludXgtczM5MHgiOiBbIkBpbWcvc2hhcnAtbGludXgtczM5MHhAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXMzOTB4IjogIjEuMi40IiB9LCAib3MiOiAibGludXgiLCAiY3B1IjogInMzOTB4IiB9LCAic2hhNTEyLW5RdENrMFBkS2ZobzNlQzVNcmJRb2lnSjJnZDFDZ2RkVU1rYWJVaityQmV2czh0WjJjVUxPeDQ2RTdveVgrMDRXR2ZBQmdJd21NQzBWcWllVGlSNGpnPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eC14NjQiOiBbIkBpbWcvc2hhcnAtbGludXgteDY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLU1FemQ4SFBLeFZ4VmVud0FhK0pSUHdFQzdRRmpvUFd1UzVOWm5CdDZCM3B1N0VHMkdlMGlkMW9MSFpwUEpkbjNPUUsrQlFEaXc5elN0aUhCVEpRUVFRPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eG11c2wtYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGludXhtdXNsLWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItZnBySlI2R3RSc010Nkt5ZnE0NElzQ2hWWmVHTjk3Z1REMzMxd2VSMWV4MWMxcnlwREVBQk42VG0yeGExd0U2bFliNURkRW5rMDNOWlBxQTdJZDIxeWc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4bXVzbC14NjQiOiBbIkBpbWcvc2hhcnAtbGludXhtdXNsLXg2NEAwLjM0LjUiLCAiIiwgeyAib3B0aW9uYWxEZXBlbmRlbmNpZXMiOiB7ICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXhtdXNsLXg2NCI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSmc4d05UMU1Vekl2aEJGeFZpcXJFaFdER3pxeW1vM3NWN3o3WnNhV2JaTkRMWFJKWm9SR3JqdWxwNjBZWXRWNHdmWThWSUtjV2lkam9qbExjV3JkOFE9PSJdLAoKICAgICJAaW1nL3NoYXJwLXdhc20zMiI6IFsiQGltZy9zaGFycC13YXNtMzJAMC4zNC41IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvcnVudGltZSI6ICJeMS43LjAiIH0sICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1PZFdURWlWa1kyUEh3cWtiQkk4ZnJGeFFRRmVrSGFTU2tVSUprd3pjbFdaZTY0TzFYNFVsVWpxcXFMYVBiVXBNT1FrNkZCdS9IdGxHWE5ibElzMGh1dz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzItYXJtNjQiOiBbIkBpbWcvc2hhcnAtd2luMzItYXJtNjRAMC4zNC41IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1XUTNBZ1dDV1lTYjJ5dCtJRzhtbkM2SmRrOVdoczdPMGd4cGhibHNMdmRoU3BTVHRtdTY5WkcxR2tiNk51dnhzTkFDd2lQVjZjTlNaTnp0MEtQc3c3Zz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzItaWEzMiI6IFsiQGltZy9zaGFycC13aW4zMi1pYTMyQDAuMzQuNSIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAiaWEzMiIgfSwgInNoYTUxMi1GVjltLzdObWVDbVNIREQ1ajQrNHBOSThDcDNhVytKdkxvWGNUVW8wSXF5alNmQVpKOGRJVW1pangxcWFKc0lpVStIb3N3NnhNNUtpakFXUkpDU2dOZz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzIteDY0IjogWyJAaW1nL3NoYXJwLXdpbjMyLXg2NEAwLjM0LjUiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi0rMjlZTXNxWTIvOWVGRWlXOTNlcVdudUxjV2N1Zm93WGV3d1NOSVQ2VXdaZFVVQ3JNM29Gak1XSC9aNi9UTW1iNGhsRmVubWZBVmJwV2V1cDJqcnlDdz09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogWyJAanJpZGdld2VsbC9nZW4tbWFwcGluZ0AwLjMuMTMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjIjogIl4xLjUuMCIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjQiIH0gfSwgInNoYTUxMi0ya2t0LzduaUo2TWdFUHhGMGJZZFE2ZXRaYUErZlF2RGNMS2NraHkxeUlRT3phb0tqQkJqU2o2My9hTFZqWUUzcWhSdDVkdk0rdVV5ZkNnNlVLQ0JiQT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3JlbWFwcGluZyI6IFsiQGpyaWRnZXdlbGwvcmVtYXBwaW5nQDIuMy41IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogIl4wLjMuNSIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjQiIH0gfSwgInNoYTUxMi1MSTl1LytsYVlHNERzMVRES1NKVzJZUHJJbGNWWU93aTJmVUM2eEI0M2x1ZUNqZ3hWNGxmZk9DWkN0WUZpSDZUTk9YK3RRS1h4OTdUNElLSGJoeUhFUT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3Jlc29sdmUtdXJpIjogWyJAanJpZGdld2VsbC9yZXNvbHZlLXVyaUAzLjEuMiIsICIiLCB7fSwgInNoYTUxMi1iUklTZ0NJalAyMC90YldTUFdNRWk1NFFWUFJaRXhrdUQ5bEpMK1VJeFVLdHdWSkE4d1cxVHJiMWpNczFSRlhvMUNCVE5aLzVocEM5UXZtS1dkb3BLdz09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3NvdXJjZS1tYXAiOiBbIkBqcmlkZ2V3ZWxsL3NvdXJjZS1tYXBAMC4zLjExIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogIl4wLjMuNSIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjUiIH0gfSwgInNoYTUxMi1aTXAxVjhaRmNQRzVkSVduUUxyM05TSTFNaUNVN1VFVGRTL0EwRzhWL1hXSHZKdjNac0ZxdXRKbjFZNVJQbUFQWDZGM0JpRTM5N09xdmVVLzlOQ3VJQT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3NvdXJjZW1hcC1jb2RlYyI6IFsiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjQDEuNS41IiwgIiIsIHt9LCAic2hhNTEyLWNZUTkzMTBncnF4dWVXYmwrV3VJVUlhaVVhRGNqN1dPcTVmVmhFbGpOVmdSZk9VaFk5ZnkyelR2Zm9xV3NuZWJoOFNsNzBWU2NGYklDdkpuTEtCME9nPT0iXSwKCiAgICAiQGpyaWRnZXdlbGwvdHJhY2UtbWFwcGluZyI6IFsiQGpyaWRnZXdlbGwvdHJhY2UtbWFwcGluZ0AwLjMuMzEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvcmVzb2x2ZS11cmkiOiAiXjMuMS4wIiwgIkBqcmlkZ2V3ZWxsL3NvdXJjZW1hcC1jb2RlYyI6ICJeMS40LjE0IiB9IH0sICJzaGE1MTItenpOUitTZFFTREp6Yzhqb2FlUDhRUW9DUXI4TnVZeDJkSUl5dGwxUWVCRVpISjl1VzZoZWJzcllnYno4aEp3VVFhbzNUV0NNdG1mVjhOdTF0d09MQXc9PSJdLAoKICAgICJAbmFwaS1ycy93YXNtLXJ1bnRpbWUiOiBbIkBuYXBpLXJzL3dhc20tcnVudGltZUAxLjEuNCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAdHlieXMvd2FzbS11dGlsIjogIl4wLjEwLjEiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQGVtbmFwaS9jb3JlIjogIl4xLjcuMSIsICJAZW1uYXBpL3J1bnRpbWUiOiAiXjEuNy4xIiB9IH0sICJzaGE1MTItM05RTk5nQTFZU2xKYi9rTUgxaWxkQVNQOUhXNy83a1luUkkyc3pXSmFvZmFTMWhXbWJHSTRIK2QzKzIyYUd6WFhOOUlKK24rR2lGVmNHaXBKUDE4b3c9PSJdLAoKICAgICJAbmV4dC9lbnYiOiBbIkBuZXh0L2VudkAxNi4yLjYiLCAiIiwge30sICJzaGE1MTItZ2Q4SG9ITjR1Zmo3M1dtUjNKbVZvbHJwSlI0N0lMSzZMb3VQNXhFbFBnbGFWeGlyNmUxYTdWenZUdkRXa09vUFhUOXJra1R6eUN4QnU0eWVaZlp3Y3c9PSJdLAoKICAgICJAbmV4dC9zd2MtZGFyd2luLWFybTY0IjogWyJAbmV4dC9zd2MtZGFyd2luLWFybTY0QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVpKR2trY05mWWdyck1rcU9kWjd6b0xhMVRPeTBxcGNNZmsvejRNaC9GS1V6NDBnVk8rSE5RV3FtTHhmNjdaNVdCNjREUnAwZGhFYnlIZmVsKzZzSlVnPT0iXSwKCiAgICAiQG5leHQvc3djLWRhcndpbi14NjQiOiBbIkBuZXh0L3N3Yy1kYXJ3aW4teDY0QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi12L1lMQkhJWTEzMkNlZDNwdUJKN1lKS3cxbHFzQ3JnY05vMmFSSmxDRXlRcnJDZVJKbHZHbG5teGhQeE5RSTNLRTNOMURONXI5VFBOUHZrYTNucTVSUT09Il0sCgogICAgIkBuZXh0L3N3Yy1saW51eC1hcm02NC1nbnUiOiBbIkBuZXh0L3N3Yy1saW51eC1hcm02NC1nbnVAMTYuMi42IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1SUE92cWxZQmJjUWprejlWUVFEWjJUMmJBUklqWFpWMUtGbHQrVjJNcjZTVy9lNEk5ZmNLc2FBMGhkeWYyRkhvVGxzVjJ4bkJkNVk5MTJyUC8xQ2U2dz09Il0sCgogICAgIkBuZXh0L3N3Yy1saW51eC1hcm02NC1tdXNsIjogWyJAbmV4dC9zd2MtbGludXgtYXJtNjQtbXVzbEAxNi4yLjYiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVVSVVR1MStkTWt4SnNQRmdtK09lRXZxOXdmNXN1ancwRXZnWXk4MFRER0hUU0xUbklIZXFiMEV1OEEzc0M5NUlSZ2plalFMK2tDNG13KzR5UHhpQVhBPT0iXSwKCiAgICAiQG5leHQvc3djLWxpbnV4LXg2NC1nbnUiOiBbIkBuZXh0L3N3Yy1saW51eC14NjQtZ251QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLURPajE4Mm1QVjhHM1VrcmF5TG9SRU01WUVZSStEazV3djdPeDl4bDFmRmliQUVMRXNGRDBsRFBmSEllSUxsdXRNTWZkeWhsellQRUxHM3BldUthdXJ3PT0iXSwKCiAgICAiQG5leHQvc3djLWxpbnV4LXg2NC1tdXNsIjogWyJAbmV4dC9zd2MtbGludXgteDY0LW11c2xAMTYuMi42IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSEtRNVNQL1YvdWI3M1V2RjduL3plSmx4azJrTG10TDdXenJnNFdmbWtqbU5vczVvbkoydEt1N3laT1BkTDE4QTZTdmZuM21heDI5eW0rcnk3TmtLNGc9PSJdLAoKICAgICJAbmV4dC9zd2Mtd2luMzItYXJtNjQtbXN2YyI6IFsiQG5leHQvc3djLXdpbjMyLWFybTY0LW1zdmNAMTYuMi42IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1MWlhwVGxQeVM1djdIaFNtbnZzTEdQM2lJWWdZT0JuYzhyOEFybFQ1NXNHSFY4OWJSMkhsRGRCaldRK1BZNlNKTW1rOFR1VkdGdXhhbG5QM2svMER3Zz09Il0sCgogICAgIkBuZXh0L3N3Yy13aW4zMi14NjQtbXN2YyI6IFsiQG5leHQvc3djLXdpbjMyLXg2NC1tc3ZjQDE2LjIuNiIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLUYwKzRpMGg5SjZDNGVFM0VBUFdzb0NrN1VXL2Riek9qeXp4WTBxbkRVT1lGdTZGRm1kWjZsOTcvWGRWMy9OejNWWXlPN1VXanlFSlVYa0dxY29YZk1BPT0iXSwKCiAgICAiQG94Yy1wcm9qZWN0L3R5cGVzIjogWyJAb3hjLXByb2plY3QvdHlwZXNAMC4xMzAuMCIsICIiLCB7fSwgInNoYTUxMi1pYkQydXN4OUpSdTdmNXB1MnRNS01JNGNwQTROZ1hKUW9ZUlA0cFE3UHhtbjFsNmsvNTNxV3RRV1pheWhZeTNYNFFaa3Q5ME90K21KRWFlWG91aW82UT09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWFuZHJvaWQtYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLWFuZHJvaWQtYXJtNjRAMS4wLjEiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItZkpJM0kwcjNDM09qL3pkQkNwYUNtQlJaWWYwN3hwYXE0eUNmRERvU0ZtK2JlV056YklsMjZwdVc4UnJhVWR1Z29Kdy85NXplck5PbjZqYXNBaHpTbWc9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1kYXJ3aW4tYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLWRhcndpbi1hcm02NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLWNLbkFoV0VzVjdUUGNBLzVFQXRlRHA2S2NKWkJRMkcrQnFFN3pheU1NaTdrTXZ3UnNidjdXVDlhT25uMFdObDRTS0VJZjQzdmpTMzFpVVB1ODBuelhnPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NCI6IFsiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1ZS3JWd1FqSVJCUG8rNUcvdTAzd0dqYmR5NHE3cHl6Q2U5M0RLOVZKN3prVm1lZzhMSjdHYmdzaUhXZFI0eFNvZTRDQVhSRDdCY2pnYnRyNjRia1hOZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWZyZWVic2QteDY0IjogWyJAcm9sbGRvd24vYmluZGluZy1mcmVlYnNkLXg2NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItei9vQnNSRW80NlNzRnFCd1l0RmUwa3BKZUJpakFUNDhPL1dYTEk0c3VpQ0xCa3IwM1JUdFRKTUN6U2REZDJ6bmxoOFZKaXpMMDlYVmtRZ2s4SVpvbnc9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmQDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItaWs4cTdHTTExenh2WXhGYzJQZURjVDZUQnZoQ1FNYVV4ZnBoL001bDlzS3VUcy9TamczTCtCeXcwRjd3MFpWTEJabXgzMFArZ0cwRUN6ek4rTUZjbVE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1nbnUiOiBbIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LWFybTY0LWdudUAxLjAuMSIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItUW9TeDJFa3lycmRaNmtjeUU4c3RxWjYydDBZcmE4RnM1aWE5bE94SnJoNlRNUUpLN2dRS21zY2RUSGY3cE9YS1JFS3JWd090SmNRRzNxVlNmYzg2NkE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsQDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi11d053RnB3S2VOaVphd2ZBV0JnZzBWSXp0UFRWM2loaGgxdlYzMzRoOWl2bk5Mb3J4blFNVTZGejh3RzFaYjRRaDlMQzEvTWtjeVQzWWxEWEczUnNnZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXBwYzY0LWdudSI6IFsiQHJvbGxkb3duL2JpbmRpbmctbGludXgtcHBjNjQtZ251QDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi16WTFidWw3T1dyN0RGQmlKKyt3b2ZYdm5yOEI0NWNlM1FzUVVoS3JJaFhzeWdBaDdiVGt3eWVNMWJpMWEyZzVDL3lDL044VFp5R0RFb01mbS9sOW1wZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXMzOTB4LWdudSI6IFsiQHJvbGxkb3duL2JpbmRpbmctbGludXgtczM5MHgtZ251QDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJzMzkweCIgfSwgInNoYTUxMi0wZnJsc1QvZjRGdDZJN1NNRVNUS25GM2Nac2RpY1FuMWRDTWtGL2pUOXdETEUrZ0dvaVFmdjFubVQ5ZStzN3MvZmVrdnZ5NnRaTTJqSHZJMnRrYkpEUT09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1nbnUiOiBbIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1nbnVAMS4wLjEiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1YQUJWbUdwOVRnMFdzcFRWdndkdVRjNGZwcXk2Sm5BVXJTUWU2T3V5cUQvMDNuSTdyME85T1dVa01Jd0ZyaktBSXFvbHZxb0E0WnJKcHBnd0UwR3htdz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1tdXNsIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC14NjQtbXVzbEAxLjAuMSIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLWJWNGZ6c3d1elZjS0Q5MG8vVk02UXFLeG54bERxMGcyQklTRExOVm14cm5ocHYxRERieVBoQ0lqWWZ2ellMVitNdmtLS25RdDJRNkFPODZTRUJVTFVRPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctb3Blbmhhcm1vbnktYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLW9wZW5oYXJtb255LWFybTY0QDEuMC4xIiwgIiIsIHsgIm9zIjogIm5vbmUiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLS9NaDBaaHEzT1A3ZlZzMGtjUUhaUDZsWkV0aE1HVGFTZjhVQlFZU0ZFWkRXR1hYbEVDK25KNkVxZW5hSzJ0NExCWE1lM0ErSy9HMkJWWFhkdE9yNFBRPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctd2FzbTMyLXdhc2kiOiBbIkByb2xsZG93bi9iaW5kaW5nLXdhc20zMi13YXNpQDEuMC4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvY29yZSI6ICIxLjEwLjAiLCAiQGVtbmFwaS9ydW50aW1lIjogIjEuMTAuMCIsICJAbmFwaS1ycy93YXNtLXJ1bnRpbWUiOiAiXjEuMS40IiB9LCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItKzF4YzlYNDVsOHVmc0JBbTZHanZ4MnFEUklZOWxUVnQwY2dXTmNKKzFnZGhYdmtieGVQQTYweVJUd1NUdVhMMDlDTWh5Sm1qcFY3RTNOb3l4YnFGUVE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjIjogWyJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjQDEuMC4xIiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi0xRCtVcVpkZm51UitKeTFHZ01Kd2k4NWJENDBIMjF1Tm1PUFJXUWh3NG9SU3VvbFovQjVyaXhaNDVESzJLWE9UQ3ZtVkNlY2F1V2dFaGJ3OGJJN3RPdz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLXdpbjMyLXg2NC1tc3ZjIjogWyJAcm9sbGRvd24vYmluZGluZy13aW4zMi14NjQtbXN2Y0AxLjAuMSIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLUlOQXljYVd1aGxPSzN3azRtUkhHc2Rnd1lXbWQ5Y0NoZFBkRTlid1dteTZybjlWcVZOWU5GR2hPZFhyb2ZYVXh3SEluY1NpUE5iOHRObThrbkRWSWVRPT0iXSwKCiAgICAiQHJvbGxkb3duL3BsdWdpbnV0aWxzIjogWyJAcm9sbGRvd24vcGx1Z2ludXRpbHNAMS4wLjEiLCAiIiwge30sICJzaGE1MTItMmo5Ykd0NUpoOGhqK3ZQdGd6UHRsNzJqMHlSeEhBeXVtb282VE5mQWpzTEIwNFV0cFN2UGJQY0RjQk14ejduKzlDWUIwYzFHeFFGeFlSZzJqaW1xR3c9PSJdLAoKICAgICJAc3RhbmRhcmQtc2NoZW1hL3NwZWMiOiBbIkBzdGFuZGFyZC1zY2hlbWEvc3BlY0AxLjEuMCIsICIiLCB7fSwgInNoYTUxMi1sMmFGeTVqQUxobmlHNUhncXJENmpYTGkvclVXckt2cU4vcUp4NnlvSnNnS2hibFZkK2lxcVU0UkNYYXZtL2pQaXR5RG81VEN2S01ucGpLbk9yaXkwdz09Il0sCgogICAgIkBzd2MvaGVscGVycyI6IFsiQHN3Yy9oZWxwZXJzQDAuNS4xNSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi44LjAiIH0gfSwgInNoYTUxMi1KUTVUdU1pNDVPd2k0L0JJTUFKQm9TUW9PSnUxMm9Pay9nQURxbGNVTDlKRWRIQjh2eWpVU3N4cWVOWG5tWEhqWUtNaTJXY1l0ZXpHRUVocVVJL0UyZz09Il0sCgogICAgIkB0YWJieV9haS9oaWpyaS1jb252ZXJ0ZXIiOiBbIkB0YWJieV9haS9oaWpyaS1jb252ZXJ0ZXJAMS4wLjUiLCAiIiwge30sICJzaGE1MTItcjViQ2xLcmNJdXNEb28wNDlkU0w4Q2F3bkhSNm1SZER3aGxRdUlnWlJOdHk2OHEweDhrM0xmMUJ0UEFNeFJmL0dnbkhCbklPNHVqZDMrR1FkTFd6eFE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvbm9kZSI6IFsiQHRhaWx3aW5kY3NzL25vZGVANC4zLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvcmVtYXBwaW5nIjogIl4yLjMuNSIsICJlbmhhbmNlZC1yZXNvbHZlIjogIl41LjIxLjAiLCAiaml0aSI6ICJeMi42LjEiLCAibGlnaHRuaW5nY3NzIjogIjEuMzIuMCIsICJtYWdpYy1zdHJpbmciOiAiXjAuMzAuMjEiLCAic291cmNlLW1hcC1qcyI6ICJeMS4yLjEiLCAidGFpbHdpbmRjc3MiOiAiNC4zLjAiIH0gfSwgInNoYTUxMi1hRmI0Z1VoRk9nZGg5QVhvNEl6QkVPekJra0F4bTlWaWd3REpuTUlZdjNsY2ZYQ0pWZXNOZmJFYUJsNEJOZ1ZSeWlkOTJBbWR2aXF3QlVCUktTZVkzZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZSI6IFsiQHRhaWx3aW5kY3NzL294aWRlQDQuMy4wIiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQHRhaWx3aW5kY3NzL294aWRlLWFuZHJvaWQtYXJtNjQiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtZGFyd2luLXg2NCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtZnJlZWJzZC14NjQiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybS1nbnVlYWJpaGYiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybTY0LWdudSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtbXVzbCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LWdudSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LW11c2wiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLXdhc20zMi13YXNpIjogIjQuMy4wIiwgIkB0YWlsd2luZGNzcy9veGlkZS13aW4zMi1hcm02NC1tc3ZjIjogIjQuMy4wIiwgIkB0YWlsd2luZGNzcy9veGlkZS13aW4zMi14NjQtbXN2YyI6ICI0LjMuMCIgfSB9LCAic2hhNTEyLUY3SFpHQmVOOUkwL0F1dUpTNVB3Y0Q4eGF5eDVyaTVHaGpZVURCRVZZVWtleHlBL2dpd2JETmpSVnJ4U2V6RTNUMjUwT1UySy93cC9sdFd4M1VPZWZnPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWFuZHJvaWQtYXJtNjQiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1hbmRyb2lkLWFybTY0QDQuMy4wIiwgIiIsIHsgIm9zIjogImFuZHJvaWQiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVRKUGlxNjd0S2xMdU9iUDZSa3d2VkdEb3hDTUJWdERnS2tMZmEvdXlqNy9GeXh2UXdIUytVT25WclhYZ2JFc2ZVYU1naVZ2QzRLYkpuUnIyNmhvNE5nPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NCI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NEA0LjMuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLW9NTi9XWlJiK1NPMzdCbVVFbEVnZUVXdVU4RS9IWFJraU9EeEp4TGUxVVRIVlhMcmRWU2dmYUpWN3BTbGhSR01TT2lYTHV4VElqZnNGM3dZdno4Y2dRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi14NjQiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1kYXJ3aW4teDY0QDQuMy4wIiwgIiIsIHsgIm9zIjogImRhcndpbiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLU42Q1VtdTRhNmJLVkFEZnc3N3AraXc2WWQ5UTNPQmhlMHZlYURYK1FhemZ1VllsUXNIZkRneEJyc2pRL0lXK3p5d0w4bVRyTmQwU2RKVC96Z3R2TWRBPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWZyZWVic2QteDY0IjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtZnJlZWJzZC14NjRANC4zLjAiLCAiIiwgeyAib3MiOiAiZnJlZWJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLXpETDVoQmtRZEg1QzZNcHFiSzNnUUFnUDgwdHNNd1NJMjZ2ak96akp0TkNNVW8wbEZnT0l0ekhLQkl1cE9aTlF4dDNvdVBIN1JQaHZOaGlUZkNlNUNRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybS1nbnVlYWJpaGYiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC1hcm0tZ251ZWFiaWhmQDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItUjA2SGROaTdBN09Fb01zZjZkNHRqWjcxUkNXblpRUEhqMm1ub3RTRlVSak5MZEJDK2NJZ1hRN2w4MUNxZW9pUWZ0amY2T09ibHhYTUluTWdOMlZ6TUE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtZ251IjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtZ251QDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1xVEpIRUxYOGpldGpoUlFIQ0xpbGtWTG15YnB6TlFBdGFJL2dhb1ZvaWRuL3VmYk5EYkFvOEtsSzJKK3lQb2M4d1F4dkR4Q21oLzVscjhuQzErbFRiZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC1hcm02NC1tdXNsIjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtbXVzbEA0LjMuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItWjZzdWtpUXNuZ25XTytsMzlYNHBQYmlXVDgxSUMrUExLRitQSHhJbHlaYkdOYjlNT0RmWWxYRVZsRnZlajVCT1pJbldYMDFrVnl6ZUx2SHNYaGZjelE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LWdudSI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LXg2NC1nbnVANC4zLjAiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1EUk5kUVJwU0d6UkdmQVJWdVZreHZNOFExMm5oMTlsNEJGL0c3ekdBMW9lKzl3Y0M2c2FGQkhUSVNycEljS3poaVh0U3JsU3JsdUNmdk11bGVkb0NUUT09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC14NjQtbXVzbCI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LXg2NC1tdXNsQDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItWjBJQURiRG84Ymg2STdoMklRTXg2MDFBZFhCTGZGcEVkVW90ZnQ4NmV2ZC84WlBmbFplOUNPUE84UTF2dytwZkxXSVVvOXpOL0pHWnZ3dUFKcWR1cWc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kiOiBbIkB0YWlsd2luZGNzcy9veGlkZS13YXNtMzItd2FzaUA0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAZW1uYXBpL2NvcmUiOiAiXjEuMTAuMCIsICJAZW1uYXBpL3J1bnRpbWUiOiAiXjEuMTAuMCIsICJAZW1uYXBpL3dhc2ktdGhyZWFkcyI6ICJeMS4yLjEiLCAiQG5hcGktcnMvd2FzbS1ydW50aW1lIjogIl4xLjEuNCIsICJAdHlieXMvd2FzbS11dGlsIjogIl4wLjEwLjEiLCAidHNsaWIiOiAiXjIuOC4xIiB9LCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItSE5aR09VeEVtRWxrc1lSN1M2c0M1alRlTkdwb2JBc3k5dTdHdTBBc2tKOC8yMEZSOUdxZWJVeUIrSEJjVS9heDZCSHVpdUppK09kYTRCK1lYNkgxeUE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2luMzItYXJtNjQtbXN2YyI6IFsiQHRhaWx3aW5kY3NzL294aWRlLXdpbjMyLWFybTY0LW1zdmNANC4zLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVBlK1JQVlRpMVQrcXltdXVScGNkdndTVlpqbmxsL2Y3bjhnQnhNTWgzeExUY3RNREtxcGRmR2ltYk15aW9xdExoVVlaeGRKOXdHTmhWN01LSHZnWnNRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLXdpbjMyLXg2NC1tc3ZjIjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtd2luMzIteDY0LW1zdmNANC4zLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1NdnJmMmtYVy95ZVcvT1RlelpsQ0dPaXJYUmNVdUxJQngvNVkxMkJhUE03d0pvcnlHNmRmUy9OSkw4YUJQcXRURXgvVm00VDR2S3pGVWNLRFQrVEtVQT09Il0sCgogICAgIkB0YWlsd2luZGNzcy9wb3N0Y3NzIjogWyJAdGFpbHdpbmRjc3MvcG9zdGNzc0A0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYWxsb2MvcXVpY2stbHJ1IjogIl41LjIuMCIsICJAdGFpbHdpbmRjc3Mvbm9kZSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUiOiAiNC4zLjAiLCAicG9zdGNzcyI6ICJeOC41LjEwIiwgInRhaWx3aW5kY3NzIjogIjQuMy4wIiB9IH0sICJzaGE1MTItSm0wNVRqeCs5eUNMR3Y1cXcxYys4NFBzZHM4TW55ckVRWUNCK0ZGazJsZ0dpVWpsUnFkeGtlNG1WVHVZcmoyeG5WWnFLaW0yQXByNXlTdVFSWUF3L3c9PSJdLAoKICAgICJAdHlieXMvd2FzbS11dGlsIjogWyJAdHlieXMvd2FzbS11dGlsQDAuMTAuMiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi40LjAiIH0gfSwgInNoYTUxMi1Sb0J2SjJYMHd1S2xXRklqcndmZkd3MUlxWkhLUXF6SWNoS2FhZFpaZm5OcHNBWXAybU0waDM2SnRQQ2pOREFIR2dZZXovMTV1TUJwZkd3Y2hoaU1nZz09Il0sCgogICAgIkB0eXBlcy9jaGFpIjogWyJAdHlwZXMvY2hhaUA1LjIuMyIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAdHlwZXMvZGVlcC1lcWwiOiAiKiIsICJhc3NlcnRpb24tZXJyb3IiOiAiXjIuMC4xIiB9IH0sICJzaGE1MTItTXc1NThvZUE5ZkZidjY1L3k0bUh0WERzOWJQbkZNWkFML2p4ZFBGVXBPSEhJWFg5MW1jZ0VIYlM1TGFocitwd1pGUjhBN0dRbGVSV2VJNmNHRkMyVUE9PSJdLAoKICAgICJAdHlwZXMvZGVlcC1lcWwiOiBbIkB0eXBlcy9kZWVwLWVxbEA0LjAuMiIsICIiLCB7fSwgInNoYTUxMi1jOWg5ZFZWTWlnTVBjNGJ3VHZDNWR4cXRxSlp3UVBlUHNXalBscFNPbm9qYm9yNnBHcWRrNTQxbGZBN0FxRlFyNXBCMUJSZHEwanVZOWRiODFCd3lGdz09Il0sCgogICAgIkB0eXBlcy9lc3RyZWUiOiBbIkB0eXBlcy9lc3RyZWVAMS4wLjkiLCAiIiwge30sICJzaGE1MTItR2hkUGd5MWVsNC9JbVAwNVgwNVV3NGN3Mi9NOTNCQ1VtbkV2V1pOU3RsQ3pFS01FNEZraytZcG9BNU9pSE5RbW9TN0NhZmI4WGEzUHlhOG0xUXJ6ZWc9PSJdLAoKICAgICJAdHlwZXMvbm9kZSI6IFsiQHR5cGVzL25vZGVAMjIuMTkuMTkiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidW5kaWNpLXR5cGVzIjogIn42LjIxLjAiIH0gfSwgInNoYTUxMi1keWgveE8yRmg1YllyZldhYXFHclJRUUdrTmRtWXc2QW1hQVV2WWVVTU5UV1F0dmI3OTZpa0xkbVRjaFJtT2xPaUlKMVREWGZXZ1Z4MVFrVWxRNkhldz09Il0sCgogICAgIkB0eXBlcy9yZWFjdCI6IFsiQHR5cGVzL3JlYWN0QDE5LjIuMTUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiY3NzdHlwZSI6ICJeMy4yLjIiIH0gfSwgInNoYTUxMi1lUndjR05IdmUrRThxdEVRU1NSbDZ1cmgrckZvcDR2OGdtNk84ckd2MjVDb2RidkZkTGpBMXZWUTFLa2lGRTB3MFVQT25iOHREaUZLTDVscDBydFk1UT09Il0sCgogICAgIkB0eXBlcy9yZWFjdC1kb20iOiBbIkB0eXBlcy9yZWFjdC1kb21AMTkuMi4zIiwgIiIsIHsgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJAdHlwZXMvcmVhY3QiOiAiXjE5LjIuMCIgfSB9LCAic2hhNTEyLWpwMkwvZVk2Zm4rS2dWVlFBT3FZSXRiRjBWWS9ZQXBlNU16MkYwYXlrU084Z3gzMWJZQ1p5dlNlWXhDSEt2ekhHNWVaamMrenlhUzVCckJXeWEyK2tRPT0iXSwKCiAgICAiQHZpdGVzdC9leHBlY3QiOiBbIkB2aXRlc3QvZXhwZWN0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBzdGFuZGFyZC1zY2hlbWEvc3BlYyI6ICJeMS4xLjAiLCAiQHR5cGVzL2NoYWkiOiAiXjUuMi4yIiwgIkB2aXRlc3Qvc3B5IjogIjQuMS42IiwgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAiY2hhaSI6ICJeNi4yLjIiLCAidGlueXJhaW5ib3ciOiAiXjMuMS4wIiB9IH0sICJzaGE1MTItN0VIRHF1UHRoQUxTVjBqaGhqZ0VXOEZYYXZpTXg3clNxdThXNm9xQ29BdU9oS292ODE0UDk5UURWMXB4TUEzUVB2MjFZdWR2Sm5nSWhqck5JNG9wTGc9PSJdLAoKICAgICJAdml0ZXN0L21vY2tlciI6IFsiQHZpdGVzdC9tb2NrZXJANC4xLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHZpdGVzdC9zcHkiOiAiNC4xLjYiLCAiZXN0cmVlLXdhbGtlciI6ICJeMy4wLjMiLCAibWFnaWMtc3RyaW5nIjogIl4wLjMwLjIxIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIm1zdyI6ICJeMi40LjkiLCAidml0ZSI6ICJeNi4wLjAgfHwgXjcuMC4wIHx8IF44LjAuMCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIm1zdyIsICJ2aXRlIl0gfSwgInNoYTUxMi1NQ0ZjNjNjek1qRUluT2xjWTJjcFFDdkNOK0tnYkFuKzYweHU5Y01nUDRzS2FMQzVKTkFLdzdKSDhRZEFub0FDODhoVzFJaVNOWitHZ1ZYbE4xVWNNUT09Il0sCgogICAgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6IFsiQHZpdGVzdC9wcmV0dHktZm9ybWF0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRpbnlyYWluYm93IjogIl4zLjEuMCIgfSB9LCAic2hhNTEyLWg1U3hEL0l6TmhaWW5yU1pSc1VaUUlDK3ZEMEdZOGNVdnEwaXdzbWtGS2l4UkNLTExXcUNYYS9GSVE0UzFSK3NJK1BHb29qa0hzZE5yYlppTTlRcGd3PT0iXSwKCiAgICAiQHZpdGVzdC9ydW5uZXIiOiBbIkB2aXRlc3QvcnVubmVyQDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAicGF0aGUiOiAiXjIuMC4zIiB9IH0sICJzaGE1MTItbk9QQ21uMit5RDBaTm1LZHNYR3YvVXhNTVdiTXVLZUQ2R3lZbmNOd2RrWUR4cFF2clBTS1lqMnJXdURqQzJZNGI2dzZoamlwNWRCS0Z6RVV1WmUzdkE9PSJdLAoKICAgICJAdml0ZXN0L3NuYXBzaG90IjogWyJAdml0ZXN0L3NuYXBzaG90QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6ICI0LjEuNiIsICJAdml0ZXN0L3V0aWxzIjogIjQuMS42IiwgIm1hZ2ljLXN0cmluZyI6ICJeMC4zMC4yMSIsICJwYXRoZSI6ICJeMi4wLjMiIH0gfSwgInNoYTUxMi1ZaHNkRTZ4QVZmVERtemp4TDJaRFV2amorWnNneU9LZStUZFF6cWtENzJ3SU9tSGthOE51R1E2TnBUTlp2OUQyWjYzZmJ3V0tKUGVWcEV3NEVRZ1l4dz09Il0sCgogICAgIkB2aXRlc3Qvc3B5IjogWyJAdml0ZXN0L3NweUA0LjEuNiIsICIiLCB7fSwgInNoYTUxMi1KRkt4TXg2dWRod0toL0xkbzI3MGUxN1FYNzEwdmd1bk1rdVBBdlhqSFN2QzZvcUxXQUhoVmhqZy9JNzFxMHUwQ0JTRXJJT0RWMUtqdjBGUU5TV2pkZz09Il0sCgogICAgIkB2aXRlc3QvdXRpbHMiOiBbIkB2aXRlc3QvdXRpbHNANC4xLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHZpdGVzdC9wcmV0dHktZm9ybWF0IjogIjQuMS42IiwgImNvbnZlcnQtc291cmNlLW1hcCI6ICJeMi4wLjAiLCAidGlueXJhaW5ib3ciOiAiXjMuMS4wIiB9IH0sICJzaGE1MTItRnhJWStVODFSM0xHS0N4YUhIRlJRNStnNi9pUmdHTG1lSFdkcDJBbWo0bGpRUnJFSVdIbVp5RGZEWUJSWmxweXFBN3FLeHRTOUREMWRoazhSblJJVlE9PSJdLAoKICAgICJhY29ybiI6IFsiYWNvcm5AOC4xNi4wIiwgIiIsIHsgImJpbiI6IHsgImFjb3JuIjogImJpbi9hY29ybiIgfSB9LCAic2hhNTEyLVVWSnlFOU10dE9zQlFJREt3MXNrYjluQXdRdVI1d3VHRDMrODJLNkpnSmxtL1krS0k5Mm9Oc01OR1pDWWREc1Z0UkhTYWswcGNWNURubzUrNGpoOXN3PT0iXSwKCiAgICAiYW5zaS1yZWdleCI6IFsiYW5zaS1yZWdleEA1LjAuMSIsICIiLCB7fSwgInNoYTUxMi1xdUpRWGxUU1VHTDJMSDlTVVhvOFZ3c1k0c29hbmhnbzZMTlNtODRFMUxCY0U4czNPMHdwZGlSenlSOXovWlpKTWxNV3YzN3FPT2I5cGRKbE1VRUtGUT09Il0sCgogICAgImFuc2ktc3R5bGVzIjogWyJhbnNpLXN0eWxlc0A0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjb2xvci1jb252ZXJ0IjogIl4yLjAuMSIgfSB9LCAic2hhNTEyLXpiQjlyQ0pBVDFyYmppVkRiMmhxS0ZITllMeGd0azhOVVJ4WjNJWndEM0Y2TnR4YlhaUUNublNpMUxreCtJRG9oZFBsRnAyMjJ3VkFMSWhlWkpRU0VnPT0iXSwKCiAgICAiYXNzZXJ0aW9uLWVycm9yIjogWyJhc3NlcnRpb24tZXJyb3JAMi4wLjEiLCAiIiwge30sICJzaGE1MTItSXppOFJRY2ZmcUNlTlZnRmlnS2xpMXNza2xJYnBIbkNZYzZBa25YR1lvQjZnckpxeWVieTdqdjEySlVRZ21UQW5JRG5iY2sxdXhrc1Q0ZHpOM1BXQkE9PSJdLAoKICAgICJiYXNlbGluZS1icm93c2VyLW1hcHBpbmciOiBbImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZ0AyLjEwLjMxIiwgIiIsIHsgImJpbiI6IHsgImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZyI6ICJkaXN0L2NsaS5janMiIH0gfSwgInNoYTUxMi1NdWpZTzNlUDcydXZtU0UwaTR3bHRzb2RSZklwWkFUUDNqdnpSTlJHR3hneklkN2FWb2NWSkpWM25mMDFxbnp6S0ZHeFFWQzlicFd4bDVjanhUci83UT09Il0sCgogICAgImJ1ZmZlci1mcm9tIjogWyJidWZmZXItZnJvbUAxLjEuMiIsICIiLCB7fSwgInNoYTUxMi1FK1hRQ1J3U2JhYWlDaHR2Nms2RHdnYytieCtCczZ2dUtKSEhsNWtveC9CYUtiaGlYenFRT3dLNGNPMjJ5RWxHcDJPQ21qd1ZoVDNIbXhneVBHbkpmUT09Il0sCgogICAgImNhbml1c2UtbGl0ZSI6IFsiY2FuaXVzZS1saXRlQDEuMC4zMDAwMTc5MyIsICIiLCB7fSwgInNoYTUxMi1pd1NzWVdhQ09vaDI2Y1Y4TndOUlZpSGxyZlV2WXNIRGZSVmNidG13MEtnNlBKSVpaWHdNa2oxNDQyRllMQkdrZVVmMWp1QXNVM0RUZnhXNTc5bXJQQT09Il0sCgogICAgImNoYWkiOiBbImNoYWlANi4yLjIiLCAiIiwge30sICJzaGE1MTItTlVQUmx1T2ZPaVRLQkt2V1B0U0Q0UGhGdldDcU9pMEJHU3ROV3M1N1g5anM3WEdUcHJTbUZvejVGMHRXaFI0V1BqTmVSOWpYcWRDNy9VcFNKVG5sUmc9PSJdLAoKICAgICJjaGFsayI6IFsiY2hhbGtANC4xLjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiYW5zaS1zdHlsZXMiOiAiXjQuMS4wIiwgInN1cHBvcnRzLWNvbG9yIjogIl43LjEuMCIgfSB9LCAic2hhNTEyLW9LbmJoRnlSSVhwVXVlejhpQk1teUVhNG5iajRJT1F5dWhjL3d5OWtZNy9XVlBjd0lPOVZBNjY4UHU4UmtPNyswRzc2U0xST2V5dzlDcFEwNjFpNG1BPT0iXSwKCiAgICAiY2xpZW50LW9ubHkiOiBbImNsaWVudC1vbmx5QDAuMC4xIiwgIiIsIHt9LCAic2hhNTEyLUlWM091MGpTTXpacmQzcFo0OG5Ma1Q5REE3QWcxcG5QemFpUWhwVzdjM1JiY3FxenZ6elZ1K0w4Z2ZxTXAvOElNMk1RdFNpcWFDeHJyY2Z1OEk4ck1BPT0iXSwKCiAgICAiY2xpdWkiOiBbImNsaXVpQDguMC4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInN0cmluZy13aWR0aCI6ICJeNC4yLjAiLCAic3RyaXAtYW5zaSI6ICJeNi4wLjEiLCAid3JhcC1hbnNpIjogIl43LjAuMCIgfSB9LCAic2hhNTEyLUJTZU5ueXVzNzVDNC8vTlE5Z1F0MS9jc1RYeW8vOFNiK2FmTEFrekFwdEZ1TXNvZDlIRm9rR051ZFpwaS9vUVY3M2huVksrc1IrNVBWUk1kK0RyN1lRPT0iXSwKCiAgICAiY2xzeCI6IFsiY2xzeEAyLjEuMSIsICIiLCB7fSwgInNoYTUxMi1lWW0wUVdCdFVyQldaV0cwZDM4Nk9HQXcxNlo5OTVQaU9WbzJCN2JqV1NiSGVkR2w1ZTBaV2FxNjVrT0dnVVNOZXNFSURrQjlJU2JUZy9KSzlkaENaQT09Il0sCgogICAgImNvbG9yLWNvbnZlcnQiOiBbImNvbG9yLWNvbnZlcnRAMi4wLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiY29sb3ItbmFtZSI6ICJ+MS4xLjQiIH0gfSwgInNoYTUxMi1SUkVDUHNqN2l1L3hiNW9LWWNzRkhTcHBGTm5zai81Mk9WVFJLYjR6UDVvblh3VkYzelZtbVRvTmNPZkdDK0NSRHBmSy9VNTg0Zk1nMzhaSENhRWxLUT09Il0sCgogICAgImNvbG9yLW5hbWUiOiBbImNvbG9yLW5hbWVAMS4xLjQiLCAiIiwge30sICJzaGE1MTItZE95KzNBdVczYTJ3TmJaSEl1TVpwVGNnakd1TFUvdUJML3ViY1pGOU9YYkRvOGZmNE84eVZwNUJmMGVmUzh1RW9ZbzVxNEZ4N2RZOU9nUUdYZ0FzUUE9PSJdLAoKICAgICJjb21tYW5kZXIiOiBbImNvbW1hbmRlckAyLjIwLjMiLCAiIiwge30sICJzaGE1MTItR3BWa21NOHZGMnZRVWtqMkx2Wm1EMzVKeGVKT0xDd0o5Y1VrdWd5azJudWhidjMrbUp2cExZWXQrMCtVU014RStvaitleS9sSkVuaFp3NzV4L09NY1E9PSJdLAoKICAgICJjb25jdXJyZW50bHkiOiBbImNvbmN1cnJlbnRseUA5LjIuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjaGFsayI6ICI0LjEuMiIsICJyeGpzIjogIjcuOC4yIiwgInNoZWxsLXF1b3RlIjogIjEuOC4zIiwgInN1cHBvcnRzLWNvbG9yIjogIjguMS4xIiwgInRyZWUta2lsbCI6ICIxLjIuMiIsICJ5YXJncyI6ICIxNy43LjIiIH0sICJiaW4iOiB7ICJjb25jIjogImRpc3QvYmluL2NvbmN1cnJlbnRseS5qcyIsICJjb25jdXJyZW50bHkiOiAiZGlzdC9iaW4vY29uY3VycmVudGx5LmpzIiB9IH0sICJzaGE1MTItZnNmck8wTXhWNjRabm95OC9sMXZWSWpqSGEyOVNaeXlxUGdRQndoaURjYVc4d0pjMlczWFdWT0d4NE0zb0pCbnYvemRVWklJcDFnRGVTOThHelA4Tmc9PSJdLAoKICAgICJjb252ZXJ0LXNvdXJjZS1tYXAiOiBbImNvbnZlcnQtc291cmNlLW1hcEAyLjAuMCIsICIiLCB7fSwgInNoYTUxMi1LdnA0NTlIclYyRkVKMUNBc2kxS3UrTVkza2FzSDE5VEZ5a1R6MnhXbU1lcTZiazJOVTNYWHZmSitRNjFtMHhrdFd3dCsxSFNZZjNKWnNUbXMzYVJKZz09Il0sCgogICAgImNzc3R5cGUiOiBbImNzc3R5cGVAMy4yLjMiLCAiIiwge30sICJzaGE1MTItejFIR0tjWXkyeEE4QUdRZndybjBQQXkrUEI3WC9HU2ozVVZKVzlxS3luNDN4V2ErZ2w1blhtVTRxcUxNUnpXVkxGQzhLdXNVWDhULzBrQ2lPWXBBSVE9PSJdLAoKICAgICJkYXRlLWZucyI6IFsiZGF0ZS1mbnNANC4yLjEiLCAiIiwge30sICJzaGE1MTItMzdSaFNkeGFHMXN1ZW42VkRDemE2ck5yUWZvb3lRaDU3SEZWUHdRR0VxMlFXbGlWTHpQUVo4T2EwMTd3ZU91K0haQ256STdOM1BmL3d5b0JLZkVxckE9PSJdLAoKICAgICJkYXRlLWZucy1qYWxhbGkiOiBbImRhdGUtZm5zLWphbGFsaUA0LjEuMC0wIiwgIiIsIHt9LCAic2hhNTEyLWhUSVAveit0K3FLd0JEY21tc25taldUZHV4Q2crNUtmZHFXUXZiMlgvOEM5K2tuWVk2ZXBOL3BmeGREdXlWbFNWZUZ6MHNNNWVFZndJVVE3MFU0Y2tnPT0iXSwKCiAgICAiZGV0ZWN0LWxpYmMiOiBbImRldGVjdC1saWJjQDIuMS4yIiwgIiIsIHt9LCAic2hhNTEyLUJ0ajJCT09PODNvM1d5SDU5ZThNZ1hzeEVRVmNhcmtVT3BFWXJ1YkIwdXJ3bk4xMHlRMzY0cnNpQnlVMTFuWmxxV1labTA1aS9vZjdpbzRtemloQnRRPT0iXSwKCiAgICAiZW1vamktcmVnZXgiOiBbImVtb2ppLXJlZ2V4QDguMC4wIiwgIiIsIHt9LCAic2hhNTEyLU1Tall6Y1dOT0EwZXdBSHB6ME14cFlGdndnNnlqeTFORzN4dGVvcXo2NDRWQ28vUlBnbnIxL0dHdCtpYzNpSlR6UThFdTNUZE0xNFNhd25WVW1HRTZBPT0iXSwKCiAgICAiZW5oYW5jZWQtcmVzb2x2ZSI6IFsiZW5oYW5jZWQtcmVzb2x2ZUA1LjIxLjUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZ3JhY2VmdWwtZnMiOiAiXjQuMi40IiwgInRhcGFibGUiOiAiXjIuMy4zIiB9IH0sICJzaGE1MTItbUxDTmJyUWxpMTFLMXlTVW11TnQ0WlVCM09wR0lEcTRxMnZUQlRmNWNMMmxwc1JqSTlRS3FTRDBuZGpXOEZ5dmNXL0pqNDZnTWU5c3l5SEFzdk1hL0E9PSJdLAoKICAgICJlcy1tb2R1bGUtbGV4ZXIiOiBbImVzLW1vZHVsZS1sZXhlckAyLjEuMCIsICIiLCB7fSwgInNoYTUxMi1uMjd6VFlNall1MWFqNE1qQ1d6U1A3RzlyNzV1dHNhb2M4bTYxd2VLK1c4Sk1CR0dReWJkNDNHc3RDWFozV05tU0Z0R1Q5d2k1OXFRVFc2bWhUUjVMUT09Il0sCgogICAgImVzYnVpbGQiOiBbImVzYnVpbGRAMC4yNS40IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGVzYnVpbGQvYWl4LXBwYzY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9hbmRyb2lkLWFybSI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvYW5kcm9pZC1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvYW5kcm9pZC14NjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2Rhcndpbi1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZGFyd2luLXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZnJlZWJzZC1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZnJlZWJzZC14NjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWFybSI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtYXJtNjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWlhMzIiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWxvb25nNjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LW1pcHM2NGVsIjogIjAuMjUuNCIsICJAZXNidWlsZC9saW51eC1wcGM2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtcmlzY3Y2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtczM5MHgiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbmV0YnNkLWFybTY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9uZXRic2QteDY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9vcGVuYnNkLWFybTY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9vcGVuYnNkLXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvc3Vub3MteDY0IjogIjAuMjUuNCIsICJAZXNidWlsZC93aW4zMi1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvd2luMzItaWEzMiI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvd2luMzIteDY0IjogIjAuMjUuNCIgfSwgImJpbiI6IHsgImVzYnVpbGQiOiAiYmluL2VzYnVpbGQiIH0gfSwgInNoYTUxMi04cGdqTFVjVWpjZ0RnKzJRNE5ZWG5QYm8vdm5jQVk0VW15YUNtMGpaZXZFUnFDSFpJYVd3ZEpIa2Y4WFF0dTRBeFNLQ2R2clViVDBYVXIxSWRaekk4UT09Il0sCgogICAgImVzY2FsYWRlIjogWyJlc2NhbGFkZUAzLjIuMCIsICIiLCB7fSwgInNoYTUxMi1XVWoycWx4YVF0TzRnNlBxNWMyOUdUY1dHRHlkOGl0TDh6VGxpcGdFQ3ozSmVzQWlpT0tvdGQ4SlU2b3RCM1BBQ2dHNnhrSlV5Vmhib01TK2JqZS9qQT09Il0sCgogICAgImVzdHJlZS13YWxrZXIiOiBbImVzdHJlZS13YWxrZXJAMy4wLjMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL2VzdHJlZSI6ICJeMS4wLjAiIH0gfSwgInNoYTUxMi03UlVLZlhnU01Na3p0Nlp1WG1xYXBPdXJMR1BQZmdqNmw5dVJaN2xSR29sdmsweTJ5b2NjMzVMZGN4S0M1UFFaZG4yRE1xaW9BUTJOb1djclRLbW02Zz09Il0sCgogICAgImV4cGVjdC10eXBlIjogWyJleHBlY3QtdHlwZUAxLjMuMCIsICIiLCB7fSwgInNoYTUxMi1rbnZ5ZWF1WWhxak9ZdlE2Nk16blNNczgzd21IckN5Y05FTjZBbysyQWVZRWZ4VUlrdWlWeGRFYTFxbEdFUEsrV2UzbjBUSGlEY2lZU3NDY2dXL0RvQT09Il0sCgogICAgImZkaXIiOiBbImZkaXJANi41LjAiLCAiIiwgeyAicGVlckRlcGVuZGVuY2llcyI6IHsgInBpY29tYXRjaCI6ICJeMyB8fCBeNCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbInBpY29tYXRjaCJdIH0sICJzaGE1MTItdEliWXRaYnVjT3MwQlJHcVBKa3NoSlVZZEwrU0RIN2RWTThnankrRVJwM1dBVWpMRUZKRSswMmthbnlIdHdqV09ud3JLWUJpd0FtTTBwNGtMSkFuWGc9PSJdLAoKICAgICJmc2V2ZW50cyI6IFsiZnNldmVudHNAMi4zLjMiLCAiIiwgeyAib3MiOiAiZGFyd2luIiB9LCAic2hhNTEyLTV4b0RmWCtmTDdmYUFUbmFnbVdQcGJGdHdoL1I3N1dtTU1xcUhHUzY1QzN2dkIwWUhyZ0YrQjFZbVozNDQxdE1qNW42M2swMjEyWE5vSnd6bGhmZlF3PT0iXSwKCiAgICAiZ2V0LWNhbGxlci1maWxlIjogWyJnZXQtY2FsbGVyLWZpbGVAMi4wLjUiLCAiIiwge30sICJzaGE1MTItRHlGUDNCTS8zWUhUUU9DVUwvdzBPWkhSMGxwS2VHcnhvdGNIV2NxTkVkbmx0cUZ3WFZmaEVCUTk0ZUlvMzRBZlFwbzByR2tpNGN5SWlmdFkwNmgyRmc9PSJdLAoKICAgICJncmFjZWZ1bC1mcyI6IFsiZ3JhY2VmdWwtZnNANC4yLjExIiwgIiIsIHt9LCAic2hhNTEyLVJiSjUvam1GY05OQ2NEVjVvOWVUbkJMSi9Ic3pXVjBQNzNiYytGZjRuUy9ySmorWWFTNklHeWlPTDBWb0JZWCtsMVdybDNrNjNoL0tySCtuaEowWHZRPT0iXSwKCiAgICAiaGFzLWZsYWciOiBbImhhcy1mbGFnQDQuMC4wIiwgIiIsIHt9LCAic2hhNTEyLUV5a0pUL1ExS2pUV2N0cHBnSUFnZlNPMHRLVnVaVWpoZ01yMTdrcVR1bU1sNkFmdjNFSVNsZVU3cVpVem9YREZUQUhUREM0Tk9vRy9aeFUzRXZsTVBRPT0iXSwKCiAgICAiaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQiOiBbImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50QDMuMC4wIiwgIiIsIHt9LCAic2hhNTEyLXp5bW01K3Urc0NzU1d5RDlxTmFlalYzREZ2aENLY2xLZGl6WWFKVXVIQTgzUkxqYjduU3VHbmRkQ0hHdjBoaytLWTdCTUFsc1dlSzRVZWc2RVY2WFFnPT0iXSwKCiAgICAiaml0aSI6IFsiaml0aUAyLjcuMCIsICIiLCB7ICJiaW4iOiB7ICJqaXRpIjogImxpYi9qaXRpLWNsaS5tanMiIH0gfSwgInNoYTUxMi1BQy83Sm9mSnZaR3JybmVXTmFFbkplT0xVeCtKbEd0N3ROYTB3WmlSUFQ0TVkxd21mS2p0Mis2TzJwMnV6Mitza2xsOE9aWm1KTU5xZWtlN2tLYk5nUT09Il0sCgogICAgImxpYnBob25lbnVtYmVyLWpzIjogWyJsaWJwaG9uZW51bWJlci1qc0AxLjEyLjQxIiwgIiIsIHt9LCAic2hhNTEyLWxzbU1tR1hCeFhJSy9WTUxFajBrTDZNdFVzMWtCR2oxblRDemk2emdRb0cxREV3cXd0MkRReUh4Y0x5a2NlSXhBbmZFM2h5YTdOdUloNlBwQzZTM2ZBPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzIjogWyJsaWdodG5pbmdjc3NAMS4zMi4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImRldGVjdC1saWJjIjogIl4yLjAuMyIgfSwgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAibGlnaHRuaW5nY3NzLWFuZHJvaWQtYXJtNjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1kYXJ3aW4tYXJtNjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1kYXJ3aW4teDY0IjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtZnJlZWJzZC14NjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1saW51eC1hcm0tZ251ZWFiaWhmIjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251IjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtbXVzbCI6ICIxLjMyLjAiLCAibGlnaHRuaW5nY3NzLWxpbnV4LXg2NC1nbnUiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtbXVzbCI6ICIxLjMyLjAiLCAibGlnaHRuaW5nY3NzLXdpbjMyLWFybTY0LW1zdmMiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy13aW4zMi14NjQtbXN2YyI6ICIxLjMyLjAiIH0gfSwgInNoYTUxMi1OWFlCemluTnJibGZyYVBHeXJiUG9EMTlDMWg5bGZJLzFtemdXWXZYVVRlNDE0R3ovWDFGRDJYQlpTWk03clJUck1BOEpMM090QWFHaWZySUtoUTV5UT09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1hbmRyb2lkLWFybTY0IjogWyJsaWdodG5pbmdjc3MtYW5kcm9pZC1hcm02NEAxLjMyLjAiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItWUs3L0NsVHQ0a0FLMHZvNnczWCtQbm0wRDJjZjJ2UEhiaE9YZG9OdGkxR2EwYWwxUDRUQlpod2pBVHZqTndMRUJDbkt2akpjMmpRZ0hYSDBORXdsQWc9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtZGFyd2luLWFybTY0IjogWyJsaWdodG5pbmdjc3MtZGFyd2luLWFybTY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVJ6ZUc5SnU1YmFnMkJ2MS9sd2xWSnZCRTNxNlR0WHNrZFpMTEN5Zmc1cHQrSEx6OUJxbElDTzdMWk03VkhOVFRuLzVQUmhIRkJTams1bGM0Y21zY1BRPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzLWRhcndpbi14NjQiOiBbImxpZ2h0bmluZ2Nzcy1kYXJ3aW4teDY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1VK1FzQnAybS9zMndxcFVZVC82d25sYWdkWmJ0WmRuZFNtdXQvTkpxbENjTUxUV3A1bXVDcklEK0s1VUo2anFEMkJGc2hlakNZWG5pUERiTmg3M1Y4dz09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1mcmVlYnNkLXg2NCI6IFsibGlnaHRuaW5nY3NzLWZyZWVic2QteDY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSkNUaWdlZEVrc1prM3RIVFR0aG5NZFZmR2Y2MUZreThKaTJFNFlqVVRFUVgxNHhpeS9sVHpYbnUxdndpWmUzYlllMHErU3BzU0gvQ1RlRFhLNldIaWc9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtLWdudWVhYmloZiI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LWFybS1nbnVlYWJpaGZAMS4zMi4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTIteDZybm5wUmEyR0wwelFPa3Q2cnRzM1lEUHpkdUxwV3Z3QUY2RU1oWEZWWlhENHRQckJrRUZxekdvd3pDc0lXc1BqcVNLK3R5TkVPRFVCWGVlVkhTa3c9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251IjogWyJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItMG5uTXlveU9MUkpYZmJNT2lsYVNSY0xIM0p3NXo5SEROR2ZUL2d3Q1BnYURqbngwaTh3N3ZCekZMRlIxZjZDTUxLRjhnVmJlYm1rVU4zZmEva1FKcFE9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtbXVzbCI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LWFybTY0LW11c2xAMS4zMi4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1VcFFrb2VucjRVSkV6Z1ZJWXBJODBsREZ2Um1QVmc2b3Fib05IZm9INENRSWZOQStIT3JaN01vN0taUDAyZEM2TGpnaFBRSmVCc3ZYaEpvZC93bklCZz09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtZ251IjogWyJsaWdodG5pbmdjc3MtbGludXgteDY0LWdudUAxLjMyLjAiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1WN1FyNTJJaFptZEtQVnIrVnR3OG8rV0xzUUpZQ1RkOGxvSWZwRGFNUldHVVpmQk9ZRUpleUpJa3FHSURNWlB3UHgyNHBVTWZ3U3h4SThwaHIvTWJPQT09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtbXVzbCI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LXg2NC1tdXNsQDEuMzIuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLWJZY0xwK1ZiMGF3c2lYZy84MHVDUmV6Q1lITmcxL2wzbXQwZ3pIbldWOVhQMVc1c0thNS9UQ2RHV2FSL3pCTTJQZUYvSGJzUXYvajJVUk5PaVZ1eFdnPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzLXdpbjMyLWFybTY0LW1zdmMiOiBbImxpZ2h0bmluZ2Nzcy13aW4zMi1hcm02NC1tc3ZjQDEuMzIuMCIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItOFNiQzhCUjQwcFM2YmFDTThzYnRZRFN3RVZRZDRKbEZUT2xhRDNnV0dIZlRoVGNBQm5OREJkYTZlVFplcWJvZmFsSUpoRngwcUt6Z0hKbWNQVG5HZHc9PSJdLAoKICAgICJsaWdodG5pbmdjc3Mtd2luMzIteDY0LW1zdmMiOiBbImxpZ2h0bmluZ2Nzcy13aW4zMi14NjQtbXN2Y0AxLjMyLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1BbXE5Qi9Tb1pZZERpMWtGcm9qbm9xUEx4WWhRNFdvNVhpTDhFVkpyVnNCOEFSb0MxUFdXNlZHdFQwV0tDZW1qeThhQytsb3VKbmpTN1UxOHgzYjA2UT09Il0sCgogICAgIm1hZ2ljLXN0cmluZyI6IFsibWFnaWMtc3RyaW5nQDAuMzAuMjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjIjogIl4xLjUuNSIgfSB9LCAic2hhNTEyLXZkMkY0WVV5RVhLR2NMSG9xK1RFeUNqeHVlU2VIbkZ4eXlqTnA4MHlnMFhWNHZVaG5EZXIvbHZ2bHFNL2FyQjViWFFONUsyLzNvaW55Q1J5eDhUMkNRPT0iXSwKCiAgICAibmFub2lkIjogWyJuYW5vaWRAMy4zLjEyIiwgIiIsIHsgImJpbiI6IHsgIm5hbm9pZCI6ICJiaW4vbmFub2lkLmNqcyIgfSB9LCAic2hhNTEyLVpCOVJILzM5cXBxNVZ1NlkrTm1VYUZoUVI2cHArTTJYdDc2WEJuRXdEYUdjVkFxaGx2eHJsM0IyYktTNUQzTkgzUVI3NnYzYVNyS2FGL0tpeTdsRXRRPT0iXSwKCiAgICAibmV4dCI6IFsibmV4dEAxNi4yLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQG5leHQvZW52IjogIjE2LjIuNiIsICJAc3djL2hlbHBlcnMiOiAiMC41LjE1IiwgImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZyI6ICJeMi45LjE5IiwgImNhbml1c2UtbGl0ZSI6ICJeMS4wLjMwMDAxNTc5IiwgInBvc3Rjc3MiOiAiOC40LjMxIiwgInN0eWxlZC1qc3giOiAiNS4xLjYiIH0sICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBuZXh0L3N3Yy1kYXJ3aW4tYXJtNjQiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy1kYXJ3aW4teDY0IjogIjE2LjIuNiIsICJAbmV4dC9zd2MtbGludXgtYXJtNjQtZ251IjogIjE2LjIuNiIsICJAbmV4dC9zd2MtbGludXgtYXJtNjQtbXVzbCI6ICIxNi4yLjYiLCAiQG5leHQvc3djLWxpbnV4LXg2NC1nbnUiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy1saW51eC14NjQtbXVzbCI6ICIxNi4yLjYiLCAiQG5leHQvc3djLXdpbjMyLWFybTY0LW1zdmMiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy13aW4zMi14NjQtbXN2YyI6ICIxNi4yLjYiLCAic2hhcnAiOiAiXjAuMzQuNSIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJAb3BlbnRlbGVtZXRyeS9hcGkiOiAiXjEuMS4wIiwgIkBwbGF5d3JpZ2h0L3Rlc3QiOiAiXjEuNTEuMSIsICJiYWJlbC1wbHVnaW4tcmVhY3QtY29tcGlsZXIiOiAiKiIsICJyZWFjdCI6ICJeMTguMi4wIHx8IDE5LjAuMC1yYy1kZTY4ZDJmNC0yMDI0MTIwNCB8fCBeMTkuMC4wIiwgInJlYWN0LWRvbSI6ICJeMTguMi4wIHx8IDE5LjAuMC1yYy1kZTY4ZDJmNC0yMDI0MTIwNCB8fCBeMTkuMC4wIiwgInNhc3MiOiAiXjEuMy4wIiB9LCAib3B0aW9uYWxQZWVycyI6IFsiQG9wZW50ZWxlbWV0cnkvYXBpIiwgIkBwbGF5d3JpZ2h0L3Rlc3QiLCAiYmFiZWwtcGx1Z2luLXJlYWN0LWNvbXBpbGVyIiwgInNhc3MiXSwgImJpbiI6IHsgIm5leHQiOiAiZGlzdC9iaW4vbmV4dCIgfSB9LCAic2hhNTEyLXFPVmdLSmcxK0F0MTVOcGVVUCtlSmdDSHZUQ2dYc29nd2VxODdSaS9JeDdQa3FRSGc0c2RhWG1TRnFLbGdhSVhFNGtXMGcyNUxFNjhXODdVQU5sSHR3PT0iXSwKCiAgICAib2J1ZyI6IFsib2J1Z0AyLjEuMSIsICIiLCB7fSwgInNoYTUxMi11VHFGOU11UHJhQVErSXNuUGYzNjZSRzRjUDlSdFVpN01MTzFOM0tFYyt3YjBhNnlLcGVMMGxtazJJQjFqWTVLSFBBbFRjNlQvSlJkQy9ZcXhITndrUT09Il0sCgogICAgInBhdGhlIjogWyJwYXRoZUAyLjAuMyIsICIiLCB7fSwgInNoYTUxMi1XVWpHY0FxUDFnUWFjb1FlK09CSnNGQTdMZDREeVh1VUlqWjVjYzc1Y0xIdko3ZHROc1R1Z3BoeElBRHdzcFMrQXJhQVVlUENLclNWdFBMRmovRjg4dz09Il0sCgogICAgInBpY29jb2xvcnMiOiBbInBpY29jb2xvcnNAMS4xLjEiLCAiIiwge30sICJzaGE1MTIteGNlSDJzbmh0YjVNOWxpcURzbUV3NTZsZTM3Nm1UWmtFWC9qRWIvUnhORnllZ051bDdlTnNsQ1hQOUZEai9MY3UwWDhLRXlNY2VQMm50cGFIckRFVkE9PSJdLAoKICAgICJwaWNvbWF0Y2giOiBbInBpY29tYXRjaEA0LjAuNCIsICIiLCB7fSwgInNoYTUxMi1RUDg4QkFLdk1hbS8zTnhINnZqMm8yMVI2TWp4WlVBZDZubHdBUy9wbkd2TjlJVkxvY0xIeEdZSXpGaGc2ZlVRKzV0aDZQNGR2NGVXOWpYM0RTSWo3QT09Il0sCgogICAgInBvc3Rjc3MiOiBbInBvc3Rjc3NAOC41LjE1IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIm5hbm9pZCI6ICJeMy4zLjEyIiwgInBpY29jb2xvcnMiOiAiXjEuMS4xIiwgInNvdXJjZS1tYXAtanMiOiAiXjEuMi4xIiB9IH0sICJzaGE1MTItRmZSOHNqZDRlbTJUNmZiM0kyTXdBSlU3SFdWTXI5emJhK2VubVFlZVdGZkNibStVT0MvMFg0RFM4WHRwVVRNd1dNR2JqS1lQN3hqZk5la3p5R21CM0E9PSJdLAoKICAgICJyZWFjdCI6IFsicmVhY3RAMTkuMi42IiwgIiIsIHt9LCAic2hhNTEyLXNmV0dHZmF2aTB4cjhQZzBzVnN5SE1BT3ppVllLZ1BMTnJTN2lnK2l2TU5iM3diQ0J3M0t4dGZsc0dCQXdEM2dZUWxFL0FFWnNUTGdUb1JyU0NqYjBRPT0iXSwKCiAgICAicmVhY3QtZGF5LXBpY2tlciI6IFsicmVhY3QtZGF5LXBpY2tlckA5LjE0LjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGRhdGUtZm5zL3R6IjogIl4xLjQuMSIsICJAdGFiYnlfYWkvaGlqcmktY29udmVydGVyIjogIjEuMC41IiwgImRhdGUtZm5zIjogIl40LjEuMCIsICJkYXRlLWZucy1qYWxhbGkiOiAiNC4xLjAtMCIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJyZWFjdCI6ICI+PTE2LjguMCIgfSB9LCAic2hhNTEyLXRCYW9EV2pQd2UwTTVwR3J1bTRIMFNSNkx5aytCTzlvSG5wOUpiS3BHS1cybWxyYU5QZ1A5Qk1mc2c1cFdwd3Jzc0FSbWVxazdZQmwyb1h1dFpUYUhBPT0iXSwKCiAgICAicmVhY3QtZG9tIjogWyJyZWFjdC1kb21AMTkuMi42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInNjaGVkdWxlciI6ICJeMC4yNy4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgInJlYWN0IjogIl4xOS4yLjYiIH0gfSwgInNoYTUxMi0wcHJNSStodkJiUGpzV254REx4bENHeU04UE42VXVXakVVQ1ltWmhPNjd4SVY5WGFzYS9yL3ZEbnErWHlxNExvMjdnOFFTYk81WXpBUnUwRDFTcHMzZz09Il0sCgogICAgInJlcXVpcmUtZGlyZWN0b3J5IjogWyJyZXF1aXJlLWRpcmVjdG9yeUAyLjEuMSIsICIiLCB7fSwgInNoYTUxMi1mR3hFSTcrd3NHOXhydmRqc3JsbUwyMk9NVFRpSFJ3QU1yb2lFZU1ncThnem9MQy9QUXI3UnNSRFNUTFVnL2JaQVp0RitUVklrSGM2LzRSSUtydWkrUT09Il0sCgogICAgInJlc2VsZWN0IjogWyJyZXNlbGVjdEA1LjIuMCIsICIiLCB7fSwgInNoYTUxMi1BZ1ozVU9abTNZbmRmcko0T1lqZ3JUN2JtQ20vMWlxa2p2RWZIL29ZanpoNlBEMnF3NFF1VDNqam5YSXJwZHQ0TVRwTVhjbE1UM2xYYm1SWStYUmFrdz09Il0sCgogICAgInJvbGxkb3duIjogWyJyb2xsZG93bkAxLjAuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAb3hjLXByb2plY3QvdHlwZXMiOiAiPTAuMTMwLjAiLCAiQHJvbGxkb3duL3BsdWdpbnV0aWxzIjogIl4xLjAuMCIgfSwgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQHJvbGxkb3duL2JpbmRpbmctYW5kcm9pZC1hcm02NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1kYXJ3aW4tYXJtNjQiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1mcmVlYnNkLXg2NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmIjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LWFybTY0LWdudSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsIjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXBwYzY0LWdudSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1zMzkweC1nbnUiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctbGludXgteDY0LWdudSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC14NjQtbXVzbCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1vcGVuaGFybW9ueS1hcm02NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy13YXNtMzItd2FzaSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjIjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLXdpbjMyLXg2NC1tc3ZjIjogIjEuMC4xIiB9LCAiYmluIjogeyAicm9sbGRvd24iOiAiYmluL2NsaS5tanMiIH0gfSwgInNoYTUxMi1YMEtRSGxqTm5Fa1dOcXFpejl6SnJHdW5oMUIwSGdPeExYdm5GcENPY2FkemN5NXFvaFozdHFNRVVnMDB2bmNvUm92WHVLM1pxQ1Q5S25uS3pvSW5GUT09Il0sCgogICAgInJ4anMiOiBbInJ4anNANy44LjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuMS4wIiB9IH0sICJzaGE1MTItZGhLZjkwM1UvUFFaWTZib05OdEFHZFdiRzg1V0FialQvMXhZb1pJQzdGQVkweVdhcE9CUVZzVnJEbDU4Vzg2Ly9lMVZwTU5CdFJWNE1hWGZkTXlTRkE9PSJdLAoKICAgICJzY2hlZHVsZXIiOiBbInNjaGVkdWxlckAwLjI3LjAiLCAiIiwge30sICJzaGE1MTItZU52K1dyVmJLdTFmM3ZiWUpUL3h0aUY1c3lBNUhQSU10ZjlJZ1kvbktnMHNXcXpBVUV2cVkveG03T2NaYy9xYWZMeC9pTzlGZ09tZVNBcDR2NXRpL1E9PSJdLAoKICAgICJzZW12ZXIiOiBbInNlbXZlckA3LjguMCIsICIiLCB7ICJiaW4iOiB7ICJzZW12ZXIiOiAiYmluL3NlbXZlci5qcyIgfSB9LCAic2hhNTEyLUFjTTdkVi81dWw0RWVrb1EyOUFnbTV2cmk4Sk5xUnlqMzlvMHFwWDZ2REYyR1pydHV0Wmw1UndnRDFYblpqaVRBZm5jc0poTUk0OFFRSDNzTjg3WU5BPT0iXSwKCiAgICAic2hhcnAiOiBbInNoYXJwQDAuMzQuNSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAaW1nL2NvbG91ciI6ICJeMS4wLjAiLCAiZGV0ZWN0LWxpYmMiOiAiXjIuMS4yIiwgInNlbXZlciI6ICJeNy43LjMiIH0sICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtZGFyd2luLWFybTY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLWRhcndpbi14NjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWRhcndpbi14NjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybSI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgtYXJtNjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1yaXNjdjY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1zMzkweCI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgteDY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4bXVzbC14NjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saW51eC1hcm0iOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgtYXJtNjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgtcHBjNjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgtcmlzY3Y2NCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC1saW51eC1zMzkweCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC1saW51eC14NjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXhtdXNsLWFybTY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLWxpbnV4bXVzbC14NjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtd2FzbTMyIjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLXdpbjMyLWFybTY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLXdpbjMyLWlhMzIiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtd2luMzIteDY0IjogIjAuMzQuNSIgfSB9LCAic2hhNTEyLU91OUk1RnQ5V05jQ2JYclU5Y01nUEJjQ0s4TGl3THFjYnl3VzN0NG9EVjM3bjFwenB1TkxzWWlBVjhlT0RuamJ0UWxTRHdaMmNVRWVRejRFNTRIbHRnPT0iXSwKCiAgICAic2hlbGwtcXVvdGUiOiBbInNoZWxsLXF1b3RlQDEuOC4zIiwgIiIsIHt9LCAic2hhNTEyLU9ibW5JRjRoWE5nMUJxaG5IbWdiREVURjhkTFBDZ2daV0Jqa1FmaFpwYnN6Wm5ZdXI1RFVsalRjQ0hpaTVMQzNKNUUweWVPLzFMSU15SCtVdkhRZ3l3PT0iXSwKCiAgICAic2lnaW5mbyI6IFsic2lnaW5mb0AyLjAuMCIsICIiLCB7fSwgInNoYTUxMi15YngwV08xLzhiU0JMRVdYWnZFZDdnTVczU24zSkZsVzNUdlgxblJFYkRMUk5RTmFlTk44V0swbWVCd1BkQWFPSTdUdFJSUkpuL0VzMXpocnJDSHU3Zz09Il0sCgogICAgInNvdXJjZS1tYXAiOiBbInNvdXJjZS1tYXBAMC42LjEiLCAiIiwge30sICJzaGE1MTItVWpnYXB1bVdsYk1oa0JnelQ3WWtjNVlYVVQ0NkYwaUt1OFNHWHEwYmN3UDVkei9oMFBsajZlbkpxanoxWmJxMmw1V2FxWW5yVmJ3V09XTXlGM0Y0N2c9PSJdLAoKICAgICJzb3VyY2UtbWFwLWpzIjogWyJzb3VyY2UtbWFwLWpzQDEuMi4xIiwgIiIsIHt9LCAic2hhNTEyLVVYV01LaExPd1ZLYjcyOElVdFFQWHhmWVUrdXNkeWJ0VXJLLzh1R0U4Q1FNdnJoT3B3dnpEQndqMFFoU0w3TVFjN3ZJc0lTQkc4VlE4K0lEUXhwZlFBPT0iXSwKCiAgICAic291cmNlLW1hcC1zdXBwb3J0IjogWyJzb3VyY2UtbWFwLXN1cHBvcnRAMC41LjIxIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImJ1ZmZlci1mcm9tIjogIl4xLjAuMCIsICJzb3VyY2UtbWFwIjogIl4wLjYuMCIgfSB9LCAic2hhNTEyLXVCSFUzTDNjenNJeVlYS1g4OGZkckdvdnhkU0NvVEdEUlo2U1lYdFNSeExaVXpIZzVQLzY2SHQ2dW9VbEh1OUVab2QraW5YaEtvM3FRZ3dYVVQveTF3PT0iXSwKCiAgICAic3RhY2tiYWNrIjogWyJzdGFja2JhY2tAMC4wLjIiLCAiIiwge30sICJzaGE1MTItMVhNSkU1ZlFvMWpHSDZZLzdlYm53UE9CRWtJRW5UNFFGMzJkNVIxK1ZYZFh2ZU0wSUJNSnQ4emZheFgxUDNRaFZ3clllKzU3Nitqa0FOdFNTMm1CYnc9PSJdLAoKICAgICJzdGQtZW52IjogWyJzdGQtZW52QDQuMS4wIiwgIiIsIHt9LCAic2hhNTEyLVJxN3liY1gyUnVDNTVyOW9hUFZFVzcveHUzdGo4dTRHZUJZSEJXQ3ljaEZ0ek1Jcjg2QTdlM1BQRUJQVDM3c0hTdEtYMytUaVgvRnIvQUNtSkxWbExRPT0iXSwKCiAgICAic3RyaW5nLXdpZHRoIjogWyJzdHJpbmctd2lkdGhANC4yLjMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZW1vamktcmVnZXgiOiAiXjguMC4wIiwgImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50IjogIl4zLjAuMCIsICJzdHJpcC1hbnNpIjogIl42LjAuMSIgfSB9LCAic2hhNTEyLXdLeVFSUXBqSjBzSXA2MkVyU1pkR3NqTUpXc2FwNW9STmloSGh1Nkc3SlZPLzlqSUI2VXlldkwrdFh1T3Fybmc4ai9jeEtUV3lXVXd2U1RyaWlaei9nPT0iXSwKCiAgICAic3RyaXAtYW5zaSI6IFsic3RyaXAtYW5zaUA2LjAuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJhbnNpLXJlZ2V4IjogIl41LjAuMSIgfSB9LCAic2hhNTEyLVkzOFZQU0hjcWtGckNwRm5ROXZ1U1htcXV1djVvWE9LcEdlVDZhR3JyM28zR2M5QWxWYTZKQmZVU09DbmJ4R0daRisvMG9vSTdLclB1VVN6dFVkVTVBPT0iXSwKCiAgICAic3R5bGVkLWpzeCI6IFsic3R5bGVkLWpzeEA1LjEuNiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjbGllbnQtb25seSI6ICIwLjAuMSIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJyZWFjdCI6ICI+PSAxNi44LjAgfHwgMTcueC54IHx8IF4xOC4wLjAtMCB8fCBeMTkuMC4wLTAiIH0gfSwgInNoYTUxMi1xU1Z5RFRlTW90ZHZRWW9IV0xOR3dSRkpIQytpK1p2ZEJSWW9zT0ZnQytXZzF2eDRmck4yL1JHL05BN1NZcXF2S05MZjM5UDJMU1JBMnB1Nm4wWFlaQT09Il0sCgogICAgInN1cHBvcnRzLWNvbG9yIjogWyJzdXBwb3J0cy1jb2xvckA4LjEuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJoYXMtZmxhZyI6ICJeNC4wLjAiIH0gfSwgInNoYTUxMi1NcFVFTjJPb2R0VXp4dktRbDcyY1VGN1JRNUVpSHNHdlNzVkcwaWE5YzVSYldHTDJDSTRDN0VwUFM4VVRCSXBsbmx6WmlOdVY1NncrRnVOeHkzdHkyUT09Il0sCgogICAgInRhaWx3aW5kLW1lcmdlIjogWyJ0YWlsd2luZC1tZXJnZUAzLjYuMCIsICIiLCB7fSwgInNoYTUxMi11eEw3cUFWUXJpcVJRUEF5SzNwajY2VnFza1dxb1ozN1BXOTRqd09Ud05mcS96OW95dTFWK2VxclpxdFIyK2ZDaVhkWU9aZS9Nb2R0OEd0dnFOenUrdz09Il0sCgogICAgInRhaWx3aW5kY3NzIjogWyJ0YWlsd2luZGNzc0A0LjMuMCIsICIiLCB7fSwgInNoYTUxMi15Nm54TUdCMW5NVzlSNms5NmU1Z2RJRnpjZkwvZ1RKUk5hcUdlczFZdmtMblBWWHpXZ2JxRkYyeUxDMFQ4Rzc3NG4yNGN4M1BlOFhyS29uaUNPQUgrUT09Il0sCgogICAgInRhcGFibGUiOiBbInRhcGFibGVAMi4zLjMiLCAiIiwge30sICJzaGE1MTItdXhjL3pwcUZnNng3Qzh2T0U3bGg2TGJkYThlRUw5em1WbS9QTGVUUEJSaGgxeENnZFdhUStKMUNVaWVHcElmbTJIZHRzVXBSditIc2hpYXNCTWNjNkE9PSJdLAoKICAgICJ0ZXJzZXIiOiBbInRlcnNlckA1LjE2LjkiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlLW1hcCI6ICJeMC4zLjIiLCAiYWNvcm4iOiAiXjguNS4wIiwgImNvbW1hbmRlciI6ICJeMi4yMC4wIiwgInNvdXJjZS1tYXAtc3VwcG9ydCI6ICJ+MC41LjIwIiB9LCAiYmluIjogeyAidGVyc2VyIjogImJpbi90ZXJzZXIiIH0gfSwgInNoYTUxMi1IUGEvRmRUQjlYR0kySDEva2VMRlpIeGw2V052QUk0WWFsSEd0RFFUbE1uSmNvcVNhYjFVd0w0bDFoR0VoczYvR21MSEJaSWcvWWdCKytqY2J6b09FZz09Il0sCgogICAgInRpbnliZW5jaCI6IFsidGlueWJlbmNoQDIuOS4wIiwgIiIsIHt9LCAic2hhNTEyLTArRFV2cVdNVmFsTG1oYTZscjRrRDhpQU1LMUh6VjAvYUtuQ3RXYjl2OTY0MVRuUC9NRmI3UGMyYnhveFFqVFhBRXJyeVhWZ1VPZnYyWXFObGxxR2VnPT0iXSwKCiAgICAidGlueWV4ZWMiOiBbInRpbnlleGVjQDEuMS4yIiwgIiIsIHt9LCAic2hhNTEyLWRBcVNxRS9SYWJwQktJOCtoMjZHZkxxNlZiM0pWWHMzMFhZUWpkTWphai9jMnRTOElZWU1iSXpQNTk5S3RSajdjNTcvd1lBcGIzUWpnUmdYbXJDdWtBPT0iXSwKCiAgICAidGlueWdsb2JieSI6IFsidGlueWdsb2JieUAwLjIuMTYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZmRpciI6ICJeNi41LjAiLCAicGljb21hdGNoIjogIl40LjAuNCIgfSB9LCAic2hhNTEyLXBuOTlWaG9BQ1lSOG5GSGh4cWl4K3V2c2JYaW5lQWFzV201b2pYb044eEV3SzVLZDMvVHJoTm4xd0J5dUQ1MlV4V1JMeThwdStrUk1uaUVpNkVxOVpnPT0iXSwKCiAgICAidGlueXJhaW5ib3ciOiBbInRpbnlyYWluYm93QDMuMS4wIiwgIiIsIHt9LCAic2hhNTEyLUJmK0lMbUJncmV0VXJkSnh6WE0wU2dYTFozWGZpYVV1T2ovSUtRSHVUWGlwKzA1WG4rdXlFWWRWZzBrWURpcFRCY0xyQ1Z5VXpBUHo3UW1BcmIwbW13PT0iXSwKCiAgICAidHJlZS1raWxsIjogWyJ0cmVlLWtpbGxAMS4yLjIiLCAiIiwgeyAiYmluIjogeyAidHJlZS1raWxsIjogImNsaS5qcyIgfSB9LCAic2hhNTEyLUwwT3JwaThxR3BSRy8vTmQrSDkwdkZCKzNpSG51ZTF6U1NHbU5PT0NoMUdMSjdyVUtWd1YySHZpanBoR1FTMlVtaFVaZXdTOVZndnhZSWRncitmRzFBPT0iXSwKCiAgICAidHNsaWIiOiBbInRzbGliQDIuOC4xIiwgIiIsIHt9LCAic2hhNTEyLW9KRnU5NEhRYitLVmR1U1VRTDd3bnBtcW5mbUxzT0EvbkFoNmI2RUgwd0NFb0swL21QZVhVNmMzd0tEVjgzTWtPdUhQUkh0U1hLS1U5OUlCYXpTLzJ3PT0iXSwKCiAgICAidHlwZXNjcmlwdCI6IFsidHlwZXNjcmlwdEA1LjkuMyIsICIiLCB7ICJiaW4iOiB7ICJ0c2MiOiAiYmluL3RzYyIsICJ0c3NlcnZlciI6ICJiaW4vdHNzZXJ2ZXIiIH0gfSwgInNoYTUxMi1qbDF2WnpQRGluTHI5ZVV0M0ovdDdWNkZnTkV3OVFqdkJQZHlzejlLZlFERDQxZlFyQzJZNHZLUWRpYVVwRlQ0YlhsYjFSSGhMcHA4d3RtNk01VGdTdz09Il0sCgogICAgInVuZGljaS10eXBlcyI6IFsidW5kaWNpLXR5cGVzQDYuMjEuMCIsICIiLCB7fSwgInNoYTUxMi1pd0RacWcwUUFHcmc5UmF2NUg0bjBNNjRjM21rUjU5Y0o2d1FwKzdDNG5JMGdzbUV4YWVkYVlMTk80NGVUNEF0QkJ3amJUaUdQTWx0Mk1kMFQ5SDlKUT09Il0sCgogICAgInVzZS1zeW5jLWV4dGVybmFsLXN0b3JlIjogWyJ1c2Utc3luYy1leHRlcm5hbC1zdG9yZUAxLjYuMCIsICIiLCB7ICJwZWVyRGVwZW5kZW5jaWVzIjogeyAicmVhY3QiOiAiXjE2LjguMCB8fCBeMTcuMC4wIHx8IF4xOC4wLjAgfHwgXjE5LjAuMCIgfSB9LCAic2hhNTEyLVBwNkdTd0dQL05yUElyeFZGQUlrT1FleXc4bEZlbk9IaWpRV2tVVHJEdnJGNEFMcXlsUDJDL0tDa2VTOWRwVU0zS3ZZUlFobmE1dnQ3SUw5NStaUTl3PT0iXSwKCiAgICAidml0ZSI6IFsidml0ZUA4LjAuMTMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAibGlnaHRuaW5nY3NzIjogIl4xLjMyLjAiLCAicGljb21hdGNoIjogIl40LjAuNCIsICJwb3N0Y3NzIjogIl44LjUuMTQiLCAicm9sbGRvd24iOiAiMS4wLjEiLCAidGlueWdsb2JieSI6ICJeMC4yLjE2IiB9LCAib3B0aW9uYWxEZXBlbmRlbmNpZXMiOiB7ICJmc2V2ZW50cyI6ICJ+Mi4zLjMiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL25vZGUiOiAiXjIwLjE5LjAgfHwgPj0yMi4xMi4wIiwgIkB2aXRlanMvZGV2dG9vbHMiOiAiXjAuMS4xOCIsICJlc2J1aWxkIjogIl4wLjI3LjAgfHwgXjAuMjguMCIsICJqaXRpIjogIj49MS4yMS4wIiwgImxlc3MiOiAiXjQuMC4wIiwgInNhc3MiOiAiXjEuNzAuMCIsICJzYXNzLWVtYmVkZGVkIjogIl4xLjcwLjAiLCAic3R5bHVzIjogIj49MC41NC44IiwgInN1Z2Fyc3MiOiAiXjUuMC4wIiwgInRlcnNlciI6ICJeNS4xNi4wIiwgInRzeCI6ICJeNC44LjEiLCAieWFtbCI6ICJeMi40LjIiIH0sICJvcHRpb25hbFBlZXJzIjogWyJAdHlwZXMvbm9kZSIsICJAdml0ZWpzL2RldnRvb2xzIiwgImVzYnVpbGQiLCAiaml0aSIsICJsZXNzIiwgInNhc3MiLCAic2Fzcy1lbWJlZGRlZCIsICJzdHlsdXMiLCAic3VnYXJzcyIsICJ0ZXJzZXIiLCAidHN4IiwgInlhbWwiXSwgImJpbiI6IHsgInZpdGUiOiAiYmluL3ZpdGUuanMiIH0gfSwgInNoYTUxMi1NRnRqQllnem1TeG1nQTRSQWZqSXlYV3BHZTFvQUxuamdVVHp6VjdRTHgvVEt4Q3pqdE1INkZkOS9lVksrNUZnMXFOb3o1VkF3c21Ncy9Ob2ZybUp2dz09Il0sCgogICAgInZpdGVzdCI6IFsidml0ZXN0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvZXhwZWN0IjogIjQuMS42IiwgIkB2aXRlc3QvbW9ja2VyIjogIjQuMS42IiwgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6ICI0LjEuNiIsICJAdml0ZXN0L3J1bm5lciI6ICI0LjEuNiIsICJAdml0ZXN0L3NuYXBzaG90IjogIjQuMS42IiwgIkB2aXRlc3Qvc3B5IjogIjQuMS42IiwgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAiZXMtbW9kdWxlLWxleGVyIjogIl4yLjAuMCIsICJleHBlY3QtdHlwZSI6ICJeMS4zLjAiLCAibWFnaWMtc3RyaW5nIjogIl4wLjMwLjIxIiwgIm9idWciOiAiXjIuMS4xIiwgInBhdGhlIjogIl4yLjAuMyIsICJwaWNvbWF0Y2giOiAiXjQuMC4zIiwgInN0ZC1lbnYiOiAiXjQuMC4wLXJjLjEiLCAidGlueWJlbmNoIjogIl4yLjkuMCIsICJ0aW55ZXhlYyI6ICJeMS4wLjIiLCAidGlueWdsb2JieSI6ICJeMC4yLjE1IiwgInRpbnlyYWluYm93IjogIl4zLjEuMCIsICJ2aXRlIjogIl42LjAuMCB8fCBeNy4wLjAgfHwgXjguMC4wIiwgIndoeS1pcy1ub2RlLXJ1bm5pbmciOiAiXjIuMy4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBlZGdlLXJ1bnRpbWUvdm0iOiAiKiIsICJAb3BlbnRlbGVtZXRyeS9hcGkiOiAiXjEuOS4wIiwgIkB0eXBlcy9ub2RlIjogIl4yMC4wLjAgfHwgXjIyLjAuMCB8fCA+PTI0LjAuMCIsICJAdml0ZXN0L2Jyb3dzZXItcGxheXdyaWdodCI6ICI0LjEuNiIsICJAdml0ZXN0L2Jyb3dzZXItcHJldmlldyI6ICI0LjEuNiIsICJAdml0ZXN0L2Jyb3dzZXItd2ViZHJpdmVyaW8iOiAiNC4xLjYiLCAiQHZpdGVzdC9jb3ZlcmFnZS1pc3RhbmJ1bCI6ICI0LjEuNiIsICJAdml0ZXN0L2NvdmVyYWdlLXY4IjogIjQuMS42IiwgIkB2aXRlc3QvdWkiOiAiNC4xLjYiLCAiaGFwcHktZG9tIjogIioiLCAianNkb20iOiAiKiIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkBlZGdlLXJ1bnRpbWUvdm0iLCAiQG9wZW50ZWxlbWV0cnkvYXBpIiwgIkB0eXBlcy9ub2RlIiwgIkB2aXRlc3QvYnJvd3Nlci1wbGF5d3JpZ2h0IiwgIkB2aXRlc3QvYnJvd3Nlci1wcmV2aWV3IiwgIkB2aXRlc3QvYnJvd3Nlci13ZWJkcml2ZXJpbyIsICJAdml0ZXN0L2NvdmVyYWdlLWlzdGFuYnVsIiwgIkB2aXRlc3QvY292ZXJhZ2UtdjgiLCAiQHZpdGVzdC91aSIsICJoYXBweS1kb20iLCAianNkb20iXSwgImJpbiI6IHsgInZpdGVzdCI6ICJ2aXRlc3QubWpzIiB9IH0sICJzaGE1MTItNmx2amJTM3A5YjRDcmRDbWd1emJoMi80dW9YaEdFMnE3MVI0T1g1c3FGOVIxYm85WGQ2ZkdyTUFmdnA1d25DemxCbkZWZENPcDZvbnVUUVZibzhpVVE9PSJdLAoKICAgICJ3aHktaXMtbm9kZS1ydW5uaW5nIjogWyJ3aHktaXMtbm9kZS1ydW5uaW5nQDIuMy4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInNpZ2luZm8iOiAiXjIuMC4wIiwgInN0YWNrYmFjayI6ICIwLjAuMiIgfSwgImJpbiI6IHsgIndoeS1pcy1ub2RlLXJ1bm5pbmciOiAiY2xpLmpzIiB9IH0sICJzaGE1MTItaFVybWFXQmRWRGN4dllxbnloMDl6dW5LelJPV2piWlRpTnk4ZEJFamtTN2VoRURRaWJYSjdYdmxtdGJ3dVRjbFVpSXlOK0N5WFFENFZta284Zk5tOHc9PSJdLAoKICAgICJ3cmFwLWFuc2kiOiBbIndyYXAtYW5zaUA3LjAuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJhbnNpLXN0eWxlcyI6ICJeNC4wLjAiLCAic3RyaW5nLXdpZHRoIjogIl40LjEuMCIsICJzdHJpcC1hbnNpIjogIl42LjAuMCIgfSB9LCAic2hhNTEyLVlWR0lqMmthbUxTVHh3Nk5zWmpvQnhmU3dzbjB5Y2Rlc21jNHArUTIxYzV6UHVaMXBsK05meFZkeFB0ZEh2bU5WT1E2WFNZRzRBVXR5dC9GaTdEMTZRPT0iXSwKCiAgICAieTE4biI6IFsieTE4bkA1LjAuOCIsICIiLCB7fSwgInNoYTUxMi0wcGZGemVnZURXSkhKSUFtVExSUDJEd0hqZEY1czdqbzl0dXp0ZFF4QWhJTkNkdlMrM25HSU5xUGQwMEFwaHFKUi8wTGhBTlVTNi8rN1NDYjk4WU9mQT09Il0sCgogICAgInlhbWwiOiBbInlhbWxAMi45LjAiLCAiIiwgeyAiYmluIjogeyAieWFtbCI6ICJiaW4ubWpzIiB9IH0sICJzaGE1MTItMkF2aE5YM21iOHpkNlp5N0lOVHRTcGwxRjE1SFc2V25xajBzcldsa0tMY3BZbC9nTUlNSml5dUdxMktlSTJZRnhVUGpkbEIrM0xjMTBzZU1MdEw0Y0E9PSJdLAoKICAgICJ5YXJncyI6IFsieWFyZ3NAMTcuNy4yIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImNsaXVpIjogIl44LjAuMSIsICJlc2NhbGFkZSI6ICJeMy4xLjEiLCAiZ2V0LWNhbGxlci1maWxlIjogIl4yLjAuNSIsICJyZXF1aXJlLWRpcmVjdG9yeSI6ICJeMi4xLjEiLCAic3RyaW5nLXdpZHRoIjogIl40LjIuMyIsICJ5MThuIjogIl41LjAuNSIsICJ5YXJncy1wYXJzZXIiOiAiXjIxLjEuMSIgfSB9LCAic2hhNTEyLTdkU3p6UlErK0NLbk5JL2tyS25ZUlY3SktLUFVYTUVoNjFzb2FIS2c5bXJXRWh6RldoRm54UHhHbCs2OWNEMU91NjNDMTNOVVBDbm1JY3J2cUN1TTZ3PT0iXSwKCiAgICAieWFyZ3MtcGFyc2VyIjogWyJ5YXJncy1wYXJzZXJAMjEuMS4xIiwgIiIsIHt9LCAic2hhNTEyLXRWcHNKVzdEZGplY0FpRnBiSUIxZTNxeElRc0U2Tm9QYzUvZVRkcmJiSUM0aDBMVnNXaG5vYTNnK20ySGNsQkl1akh6c3haNFZKVkErR1V1YzIvTEJ3PT0iXSwKCiAgICAiem9kIjogWyJ6b2RANC40LjMiLCAiIiwge30sICJzaGE1MTIteXRFTkZqSUpGbDJVd1lnbGRlMmpjaFcySHdtNEdKRkxEaVNYV2RUckpRQklOOUZjeXA3bjREaHhKRWlXTkFKTVYxL0JxV2ZXL2trZzcxVURjSEp5VFE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQGVtbmFwaS9jb3JlIjogWyJAZW1uYXBpL2NvcmVAMS4xMC4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvd2FzaS10aHJlYWRzIjogIjEuMi4xIiwgInRzbGliIjogIl4yLjQuMCIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTIteXE2T2tKNHA4MkNBZlBsMHU5bVFlYlFIS1BKa1k3V3JJdWsyMDVjVFluWWUrazJaOFlCaDExRnJiUkcvSDZpaGlycWNhY09nbDJCSU84b3lNUUxlWHc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQGVtbmFwaS9ydW50aW1lIjogWyJAZW1uYXBpL3J1bnRpbWVAMS4xMC4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRzbGliIjogIl4yLjQuMCIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItZXd2WWxrODZ4VW9HSTB6UVJOcS9tQysxNlIxUWVEbEtReTIxS2kzb1NZWE5nTGI0NUdWMVA2QTBNKy9zNm55Q3VORHFlNVZwYVk4NEJ6WEd3VmJ3RkE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQGVtbmFwaS93YXNpLXRocmVhZHMiOiBbIkBlbW5hcGkvd2FzaS10aHJlYWRzQDEuMi4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRzbGliIjogIl4yLjQuMCIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItdVRJSTdPWUYrL01lcy9NcmNJT1lwNXlPdFNNTEJXU0lvTFBwY2d3aXBvaUtibGk2azMyMnRjb0ZzeG9JSXhQRHFXMDFTUUdBZ2tvNEV6WmkyQk52Mnc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQG5hcGktcnMvd2FzbS1ydW50aW1lIjogWyJAbmFwaS1ycy93YXNtLXJ1bnRpbWVAMS4xLjQiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHR5YnlzL3dhc20tdXRpbCI6ICJeMC4xMC4xIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvY29yZSI6ICJeMS43LjEiLCAiQGVtbmFwaS9ydW50aW1lIjogIl4xLjcuMSIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItM05RTk5nQTFZU2xKYi9rTUgxaWxkQVNQOUhXNy83a1luUkkyc3pXSmFvZmFTMWhXbWJHSTRIK2QzKzIyYUd6WFhOOUlKK24rR2lGVmNHaXBKUDE4b3c9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQHR5YnlzL3dhc20tdXRpbCI6IFsiQHR5YnlzL3dhc20tdXRpbEAwLjEwLjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9LCAiYnVuZGxlZCI6IHRydWUgfSwgInNoYTUxMi1Sb0J2SjJYMHd1S2xXRklqcndmZkd3MUlxWkhLUXF6SWNoS2FhZFpaZm5OcHNBWXAybU0waDM2SnRQQ2pOREFIR2dZZXovMTV1TUJwZkd3Y2hoaU1nZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS13YXNtMzItd2FzaS90c2xpYiI6IFsidHNsaWJAMi44LjEiLCAiIiwgeyAiYnVuZGxlZCI6IHRydWUgfSwgInNoYTUxMi1vSkZ1OTRIUWIrS1ZkdVNVUUw3d25wbXFuZm1Mc09BL25BaDZiNkVIMHdDRW9LMC9tUGVYVTZjM3dLRFY4M01rT3VIUFJIdFNYS0tVOTlJQmF6Uy8ydz09Il0sCgogICAgImNoYWxrL3N1cHBvcnRzLWNvbG9yIjogWyJzdXBwb3J0cy1jb2xvckA3LjIuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJoYXMtZmxhZyI6ICJeNC4wLjAiIH0gfSwgInNoYTUxMi1xcENBdlJsOXN0dU9IdmVLc243SG5jSlJ2djUwMXFJYWNLelFsTy8rTHd4YzkrMHEyd0x5djREZnZ0ODAvRFBuMnBxT0JzSmREaW9nWEdSOStPdndSdz09Il0sCgogICAgIm5leHQvcG9zdGNzcyI6IFsicG9zdGNzc0A4LjQuMzEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAibmFub2lkIjogIl4zLjMuNiIsICJwaWNvY29sb3JzIjogIl4xLjAuMCIsICJzb3VyY2UtbWFwLWpzIjogIl4xLjAuMiIgfSB9LCAic2hhNTEyLVBTMDhJYm9pYTltdHMvMnlnVjNlTHBZNWdoblVjZkxWL0VYVE9XMUUycVl4SktHR0JVdE5qTjc2RllIbk1zMzZSbUFSbjQxYkMwQVptbityUjBPVnBRPT0iXSwKICB9Cn0K" }, { "path": "metadata.json", "kind": "text", "content": '{\n "id": "retail",\n "name": "Retail",\n "tagline": "Variant-aware retail storefront with full product detail pages and instalment support.",\n "industry": "retail",\n "tags": ["retail", "electronics", "variants"],\n "stability": "stable",\n "schemaType": "Store",\n "mock": {\n "seedName": "retail",\n "seedBusinessId": "bus_currents_electronics"\n }\n}\n' }, { "path": "next.config.ts", "kind": "text", "content": 'import type { NextConfig } from "next";\n\n// Same-origin proxy target for the storefront API. The public key\n// decides: a real `cpk_live_\u2026` / `cpk_test_\u2026` only resolves against\n// hosted Cimplify, so browser cart writes go to the same place the\n// server catalogue reads come from. Anything else (`mock-dev`, empty)\n// falls back to the local `cimplify dev` mock in dev.\nconst publicKey = process.env.NEXT_PUBLIC_CIMPLIFY_PUBLIC_KEY?.trim() ?? "";\nconst keyTargetsHostedCimplify =\n publicKey.startsWith("cpk_live_") || publicKey.startsWith("cpk_test_");\nconst STOREFRONT_URL =\n process.env.NODE_ENV === "production" || keyTargetsHostedCimplify\n ? "https://storefronts.cimplify.io"\n : "http://127.0.0.1:8787";\n\nif (STOREFRONT_URL === "http://127.0.0.1:8787") {\n console.warn(\n "[cimplify] next.config resolved the local storefront API URL; production deploys must run with NODE_ENV=production.",\n );\n}\n\n// Cache Components (\'use cache\' + cacheTag/cacheLife) require Node-specific\n// setTimeout atomicity and serialize a postponed state that routinely exceeds\n// CF Workers\' 128MB zlib limit. We\'re on Cloudflare Workers via opennext, so\n// we stay on Next 16\'s "Previous Model" \u2014 `fetch.next.{revalidate,tags}` via\n// the SDK\'s `cacheOptions`, plus `export const revalidate` per page. See\n// https://nextjs.org/docs/app/guides/caching-without-cache-components.\nconst nextConfig: NextConfig = {\n async redirects() {\n return [\n { source: "/login", destination: "/account", permanent: false },\n { source: "/signup", destination: "/account", permanent: false },\n ];\n },\n async rewrites() {\n return [\n { source: "/api/v1/:path*", destination: `${STOREFRONT_URL}/api/v1/:path*` },\n { source: "/img/:path*", destination: `${STOREFRONT_URL}/img/:path*` },\n { source: "/elements/:path*", destination: `${STOREFRONT_URL}/elements/:path*` },\n { source: "/_mock/:path*", destination: `${STOREFRONT_URL}/_mock/:path*` },\n ];\n },\n images: {\n loader: "custom",\n loaderFile: "./lib/cimplify-loader.ts",\n remotePatterns: [\n { protocol: "http", hostname: "127.0.0.1", port: "8787", pathname: "/img/**" },\n { protocol: "http", hostname: "localhost", port: "8787", pathname: "/img/**" },\n { protocol: "http", hostname: "localhost", port: "3000", pathname: "/img/**" },\n { protocol: "https", hostname: "loremflickr.com", pathname: "/**" },\n { protocol: "https", hostname: "images.unsplash.com", pathname: "/**" },\n { protocol: "https", hostname: "static-tmp.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "storefrontassetscdn.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "cdn.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "res.cloudinary.com", pathname: "/cimplify/**" },\n ],\n },\n};\n\nexport default nextConfig;\n' }, { "path": "CLAUDE.md", "kind": "text", "content": "# CLAUDE.md\n\nThis project was scaffolded from a Cimplify storefront template (`cimplify init`).\n\n## Read these first\n\n- **`AGENTS.md`** at the project root \u2014 the file \u2194 `brand.X` field map for *this template's* industry, plus the architectural rules.\n- **`.claude/skills/cimplify-storefront/SKILL.md`** \u2014 the playbook for common tasks (rebrand, add a section, wire a Server Action, deploy, eject a component). Invoke it whenever you're asked to change content, palette, copy, or routing.\n\n## The two-line summary\n\n1. **Edit `lib/brand.ts`** for any visible string.\n2. **Edit `app/globals.css` `@theme` block** for any palette / radius / font change.\n\nThat covers ~95% of what merchants ask for. For anything else, follow the `cimplify-storefront` skill.\n\n## Don't do\n\n- Hardcode strings in pages or components.\n- Enable `cacheComponents: true` in `next.config.ts` \u2014 we're on Cloudflare Workers, where `'use cache'` postponed state blows past CF's 128MB zlib limit. This template stays on Next 16's \"Previous Model\" (ISR): `export const revalidate` per page + `cacheOptions: { revalidate, tags }` on SDK reads.\n- Add `'use cache'`, `cacheTag`, or `cacheLife` anywhere. Use the SDK's `cacheOptions` instead.\n- Use `unstable_cache` \u2014 it's gone in Next 16. Use SDK `cacheOptions` or `fetch.next.{revalidate,tags}`.\n- Run `bun test` (Bun's `vi` shim is incomplete) \u2014 use `bun run test:run`.\n" }, { "path": "app/about/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `About \u2014 ${brand.name}`,\n description: brand.description,\n};\n\nexport default function AboutPage() {\n const a = brand.about;\n // Title supports a single \\n for a hard line break.\n const titleParts = a.title.split("\\n");\n return (\n <article className="max-w-3xl mx-auto px-6 sm:px-8 py-16">\n <p className="text-[11px] font-mono uppercase tracking-[0.16em] text-primary mb-2">\n {a.eyebrow}\n </p>\n <h1 className="text-[clamp(2.25rem,5vw,3.5rem)] font-bold mb-6 -tracking-[0.025em] leading-tight">\n {titleParts.map((line, i) => (\n <span key={i}>\n {line}\n {i < titleParts.length - 1 && <br />}\n </span>\n ))}\n </h1>\n <div className="prose prose-lg max-w-none space-y-5 text-foreground/90 leading-relaxed">\n {a.paragraphs.map((p, i) => (\n <p key={i}>{p}</p>\n ))}\n {a.sections.map((s) => (\n <div key={s.heading}>\n <h2 className="text-2xl font-semibold mt-10 mb-3 -tracking-[0.02em]">\n {s.heading}\n </h2>\n <p>{s.body}</p>\n </div>\n ))}\n </div>\n </article>\n );\n}\n' }, { "path": "app/llms.txt/route.ts", "kind": "text", "content": 'import { getServerClient, tags, type Product } from "@cimplify/sdk/server";\nimport { brand } from "@/lib/brand";\nimport { getSiteUrl } from "@/lib/site-url";\n\nexport const revalidate = 3600;\n\nasync function buildLlmsTxt(SITE_URL: string): Promise<string> {\n const client = getServerClient();\n const [productsRes, categoriesRes, collectionsRes] = await Promise.all([\n client.catalogue.getProducts(\n { limit: 500 },\n { cacheOptions: { revalidate: 3600, tags: [tags.products()] } },\n ),\n client.catalogue.getCategories({\n cacheOptions: { revalidate: 3600, tags: [tags.categories()] },\n }),\n client.catalogue.getCollections({\n cacheOptions: { revalidate: 3600, tags: [tags.collections()] },\n }),\n ]);\n\n const products: Product[] = productsRes.ok ? productsRes.value.items : [];\n const categories = categoriesRes.ok ? categoriesRes.value : [];\n const collections = collectionsRes.ok ? collectionsRes.value : [];\n\n const lines: string[] = [];\n lines.push(`# ${brand.name}`);\n lines.push("");\n lines.push(`> ${brand.llms.summary}`);\n lines.push("");\n lines.push("## Browse");\n lines.push(`- [Home](${SITE_URL}/)`);\n lines.push(`- [Shop](${SITE_URL}/shop): Full catalogue with filter and sort.`);\n\n if (categories.length > 0) {\n lines.push("");\n lines.push("## Categories");\n for (const c of categories) {\n lines.push(\n `- [${c.name}](${SITE_URL}/categories/${c.slug})${c.description ? `: ${c.description}` : ""}`,\n );\n }\n }\n\n if (collections.length > 0) {\n lines.push("");\n lines.push("## Collections");\n for (const c of collections) {\n lines.push(\n `- [${c.name}](${SITE_URL}/collections/${c.slug})${c.description ? `: ${c.description}` : ""}`,\n );\n }\n }\n\n if (products.length > 0) {\n lines.push("");\n lines.push("## Products");\n for (const p of products) {\n const slug = p.slug ?? p.id;\n const price = `${brand.currency} ${p.default_price}`;\n const desc = p.description ? ` \u2014 ${p.description.replace(/\\s+/g, " ").slice(0, 200)}` : "";\n lines.push(`- [${p.name}](${SITE_URL}/products/${slug}) (${price})${desc}`);\n }\n }\n\n lines.push("");\n lines.push("## Information");\n lines.push(`- [About](${SITE_URL}/about)`);\n lines.push(`- [Support / FAQ](${SITE_URL}/faq)`);\n lines.push(`- [Terms of Service](${SITE_URL}/terms)`);\n lines.push(`- [Privacy Policy](${SITE_URL}/privacy)`);\n lines.push(`- [Sitemap (XML)](${SITE_URL}/sitemap.xml)`);\n lines.push("");\n lines.push("## Contact");\n lines.push(`- Email: ${brand.contact.email}`);\n lines.push(`- Phone: ${brand.contact.phone}`);\n lines.push(`- Address: ${brand.contact.address}`);\n\n return lines.join("\\n") + "\\n";\n}\n\n/**\n * `/llms.txt` \u2014 machine-readable site index for LLMs (per llmstxt.org).\n * Lets coding agents and chat assistants find products, categories, and\n * support pages without scraping HTML. Plain Markdown so it streams cheaply\n * into context windows.\n */\nexport async function GET(): Promise<Response> {\n const body = await buildLlmsTxt(await getSiteUrl());\n return new Response(body, {\n headers: {\n "Content-Type": "text/plain; charset=utf-8",\n "Cache-Control": "public, max-age=0, s-maxage=3600, stale-while-revalidate=86400",\n },\n });\n}\n' }, { "path": "app/contact/contact-form.tsx", "kind": "text", "content": `"use client";
|
|
674
|
+
` }, { "path": "lib/site-url.ts", "kind": "text", "content": 'import { SITE_URL } from "./site.config";\n\n/** Canonical absolute URL for this storefront. */\nexport async function getSiteUrl(): Promise<string> {\n return SITE_URL;\n}\n' }, { "path": "lib/cimplify-loader.ts", "kind": "text", "content": 'import type { ImageLoader } from "next/image";\n\nimport { assetUrl, isCimplifyAsset } from "@cimplify/sdk";\n\nconst cdnBase = process.env.NEXT_PUBLIC_CIMPLIFY_CDN_URL?.trim() || undefined;\n\nconst cimplifyImageLoader: ImageLoader = ({ src, width, quality }) => {\n if (isCimplifyAsset(src, cdnBase)) {\n return assetUrl(src, {\n base: cdnBase,\n w: width,\n quality,\n format: "auto",\n });\n }\n return src;\n};\n\nexport default cimplifyImageLoader;\n' }, { "path": "lib/cart.ts", "kind": "text", "content": '"use client";\n\nimport { useCart } from "@cimplify/sdk/react";\n\n/**\n * Reactive cart count for the header pill. Subscribes to the SDK cart\n * state \u2014 updates immediately on add / remove / quantity change.\n */\nexport function useCartCount(): { count: number } {\n const { itemCount } = useCart();\n return { count: itemCount };\n}\n' }, { "path": ".gitignore", "kind": "text", "content": "node_modules\n.next\n.open-next\nout\n.env\n.env.local\n.env*.local\n.DS_Store\n*.tsbuildinfo\nnext-env.d.ts\n" }, { "path": "package.json", "kind": "text", "content": '{\n "name": "__STOREFRONT_NAME__",\n "private": true,\n "version": "0.0.0",\n "scripts": {\n "dev": "concurrently -k -n mock,next -c blue,magenta \\"cimplify-mock --seed retail --quiet\\" \\"next dev\\"",\n "dev:storefront": "next dev",\n "dev:mock": "cimplify-mock --seed retail",\n "build": "next build",\n "start": "next start",\n "typecheck": "tsc --noEmit",\n "test": "vitest",\n "test:run": "vitest run",\n "check:brand": "vitest run __tests__/brand.test.ts",\n "check:cart": "vitest run __tests__/cart-flow.test.ts",\n "check:contract": "vitest run __tests__/contract.test.ts",\n "check": "bun run typecheck && bun run test:run"\n },\n "dependencies": {\n "@cimplify/sdk": "^0.57.0",\n "next": "^16.2.6",\n "react": "^19.0.0",\n "react-dom": "^19.0.0"\n },\n "devDependencies": {\n "@tailwindcss/postcss": "^4.2.4",\n "@types/node": "^22.10.0",\n "@types/react": "^19.0.0",\n "@types/react-dom": "^19.0.0",\n "concurrently": "^9.0.0",\n "tailwindcss": "^4.2.4",\n "typescript": "^5.9.3",\n "vitest": "^4.1.5"\n }\n}\n' }, { "path": "bun.lock", "kind": "binary", "content": "ewogICJsb2NrZmlsZVZlcnNpb24iOiAxLAogICJjb25maWdWZXJzaW9uIjogMSwKICAid29ya3NwYWNlcyI6IHsKICAgICIiOiB7CiAgICAgICJuYW1lIjogIl9fU1RPUkVGUk9OVF9OQU1FX18iLAogICAgICAiZGVwZW5kZW5jaWVzIjogewogICAgICAgICJAY2ltcGxpZnkvc2RrIjogIl4wLjU0LjAiLAogICAgICAgICJuZXh0IjogIl4xNi4yLjYiLAogICAgICAgICJyZWFjdCI6ICJeMTkuMC4wIiwKICAgICAgICAicmVhY3QtZG9tIjogIl4xOS4wLjAiLAogICAgICB9LAogICAgICAiZGV2RGVwZW5kZW5jaWVzIjogewogICAgICAgICJAdGFpbHdpbmRjc3MvcG9zdGNzcyI6ICJeNC4yLjQiLAogICAgICAgICJAdHlwZXMvbm9kZSI6ICJeMjIuMTAuMCIsCiAgICAgICAgIkB0eXBlcy9yZWFjdCI6ICJeMTkuMC4wIiwKICAgICAgICAiQHR5cGVzL3JlYWN0LWRvbSI6ICJeMTkuMC4wIiwKICAgICAgICAiY29uY3VycmVudGx5IjogIl45LjAuMCIsCiAgICAgICAgInRhaWx3aW5kY3NzIjogIl40LjIuNCIsCiAgICAgICAgInR5cGVzY3JpcHQiOiAiXjUuOS4zIiwKICAgICAgICAidml0ZXN0IjogIl40LjEuNSIsCiAgICAgIH0sCiAgICB9LAogIH0sCiAgInBhY2thZ2VzIjogewogICAgIkBhbGxvYy9xdWljay1scnUiOiBbIkBhbGxvYy9xdWljay1scnVANS4yLjAiLCAiIiwge30sICJzaGE1MTItVXJjQUJCKzRiVXJGQUJ3Ymx1VElCRXJYd3Zic1UvVjdUWldmbWJnSmZia3dpQnV6aVM5Z3hkT0RVeXVpZWNmZEdRODVqZ2xNVzZqdVMzK3o1VHNLTHc9PSJdLAoKICAgICJAYmFiZWwvcnVudGltZSI6IFsiQGJhYmVsL3J1bnRpbWVANy4yOS4yIiwgIiIsIHt9LCAic2hhNTEyLUppRFNoSDQ1ektIV3lHZTRaTlZSckNqQno4Tmg5VE1tWkcxa2g0UVRLOGhDQlRXQmk4RGEraTdzMWZKdzcvbFlwTTRjY2VwU05mcXpaL1F2QUJCaTVnPT0iXSwKCiAgICAiQGJhc2UtdWkvcmVhY3QiOiBbIkBiYXNlLXVpL3JlYWN0QDEuNS4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBiYWJlbC9ydW50aW1lIjogIl43LjI5LjIiLCAiQGJhc2UtdWkvdXRpbHMiOiAiMC4yLjkiLCAiQGZsb2F0aW5nLXVpL3JlYWN0LWRvbSI6ICJeMi4xLjgiLCAiQGZsb2F0aW5nLXVpL3V0aWxzIjogIl4wLjIuMTEiLCAidXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUiOiAiXjEuNi4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBkYXRlLWZucy90eiI6ICJeMS4yLjAiLCAiQHR5cGVzL3JlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgImRhdGUtZm5zIjogIl40LjAuMCIsICJyZWFjdCI6ICJeMTcgfHwgXjE4IHx8IF4xOSIsICJyZWFjdC1kb20iOiAiXjE3IHx8IF4xOCB8fCBeMTkiIH0sICJvcHRpb25hbFBlZXJzIjogWyJAZGF0ZS1mbnMvdHoiLCAiQHR5cGVzL3JlYWN0IiwgImRhdGUtZm5zIl0gfSwgInNoYTUxMi16MWdTQWxjZWQxeVkraU0rbUhERXRJa0Q4VUkzRWJzNTJNdUJQeHZWNmY1aFJ1dGsreHZDSC93dUI3aERxRHpLOUpHNUZvTXo1bmhycXRTczF3anQxQT09Il0sCgogICAgIkBiYXNlLXVpL3V0aWxzIjogWyJAYmFzZS11aS91dGlsc0AwLjIuOSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYmFiZWwvcnVudGltZSI6ICJeNy4yOS4yIiwgIkBmbG9hdGluZy11aS91dGlscyI6ICJeMC4yLjExIiwgInJlc2VsZWN0IjogIl41LjEuMSIsICJ1c2Utc3luYy1leHRlcm5hbC1zdG9yZSI6ICJeMS42LjAiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL3JlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgInJlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgInJlYWN0LWRvbSI6ICJeMTcgfHwgXjE4IHx8IF4xOSIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkB0eXBlcy9yZWFjdCJdIH0sICJzaGE1MTIteC9QRERDWXpvcVBwanJkeWIzVmN5eWxUSTJJalVYRXRZREdpNWZvaDdLc25tTkpJSWFWd0EyR0xnREgxZHBzMUdnWGlKYkE2MGhNK0F5dVRmUXpJdnc9PSJdLAoKICAgICJAY2ltcGxpZnkvc2RrIjogWyJAY2ltcGxpZnkvc2RrQDAuNTQuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYmFzZS11aS9yZWFjdCI6ICJeMS40LjEiLCAiY2xzeCI6ICJeMi4xLjEiLCAiZGF0ZS1mbnMiOiAiXjQuMS4wIiwgImxpYnBob25lbnVtYmVyLWpzIjogIjEuMTIuNDEiLCAicmVhY3QtZGF5LXBpY2tlciI6ICJeOS4xNC4wIiwgInRhaWx3aW5kLW1lcmdlIjogIl4zLjUuMCIsICJ6b2QiOiAiXjQuNC4zIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBwYXlzdGFjay9pbmxpbmUtanMiOiAiXjIuMjIuOCIsICJtc3ciOiAiPj0yLjAuMCIsICJyZWFjdCI6ICI+PTE3LjAuMCIsICJ2aXRlc3QiOiAiPj0yLjAuMCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkBwYXlzdGFjay9pbmxpbmUtanMiLCAibXN3IiwgInJlYWN0IiwgInZpdGVzdCJdLCAiYmluIjogeyAiY2ltcGxpZnktbW9jayI6ICJkaXN0L21vY2svY2xpLm1qcyIgfSB9LCAic2hhNTEyLVlVTi9sT3FWaUhjaTF2OVVTV1d3QVd0eTI5cEVYQmRMVHVLYXJTbDhFcGFmV2g1amtkR1oxUStOZTkvYmZnVFptUjhpVFVsdEE4VTdnbFYyRm9SU2dnPT0iXSwKCiAgICAiQGRhdGUtZm5zL3R6IjogWyJAZGF0ZS1mbnMvdHpAMS40LjEiLCAiIiwge30sICJzaGE1MTItUDVMVU5odGJqNllmSTNpSmp3NUVMOWVVQUc2T2l0RDBXM2ZXUWNwUWpEUmMvUUlzTDB0Uk51TzFQY0R2UGNjV0wxZlNUWFhkRTFkcytsOTVEVi9PRkE9PSJdLAoKICAgICJAZW1uYXBpL2NvcmUiOiBbIkBlbW5hcGkvY29yZUAxLjEwLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGVtbmFwaS93YXNpLXRocmVhZHMiOiAiMS4yLjEiLCAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTIteXE2T2tKNHA4MkNBZlBsMHU5bVFlYlFIS1BKa1k3V3JJdWsyMDVjVFluWWUrazJaOFlCaDExRnJiUkcvSDZpaGlycWNhY09nbDJCSU84b3lNUUxlWHc9PSJdLAoKICAgICJAZW1uYXBpL3J1bnRpbWUiOiBbIkBlbW5hcGkvcnVudGltZUAxLjEwLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTItZXd2WWxrODZ4VW9HSTB6UVJOcS9tQysxNlIxUWVEbEtReTIxS2kzb1NZWE5nTGI0NUdWMVA2QTBNKy9zNm55Q3VORHFlNVZwYVk4NEJ6WEd3VmJ3RkE9PSJdLAoKICAgICJAZW1uYXBpL3dhc2ktdGhyZWFkcyI6IFsiQGVtbmFwaS93YXNpLXRocmVhZHNAMS4yLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTItdVRJSTdPWUYrL01lcy9NcmNJT1lwNXlPdFNNTEJXU0lvTFBwY2d3aXBvaUtibGk2azMyMnRjb0ZzeG9JSXhQRHFXMDFTUUdBZ2tvNEV6WmkyQk52Mnc9PSJdLAoKICAgICJAZXNidWlsZC9haXgtcHBjNjQiOiBbIkBlc2J1aWxkL2FpeC1wcGM2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYWl4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi0xVkNJQ1d5cGVRS2hWYkU5b1cvc0phQW1qTHhoVnFhY2RrdlBMRWp3bHR0amZ3RU5SU0NsUzhFakJ6MEt6UnlGU0NQRElrdVhXMzRKZS92azd6ZEI3UT09Il0sCgogICAgIkBlc2J1aWxkL2FuZHJvaWQtYXJtIjogWyJAZXNidWlsZC9hbmRyb2lkLWFybUAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtIiB9LCAic2hhNTEyLVFOZFFFcHM3RGZGd0UzaFhpVTRCWmVPVjY4SEh6WXdHZDBOdGhoZDN1Q2trRUtLNy9SNk1UZ00wUDdIN0ZBczVwVS9ESVdzdmlNbUVHeEVveElaK1pRPT0iXSwKCiAgICAiQGVzYnVpbGQvYW5kcm9pZC1hcm02NCI6IFsiQGVzYnVpbGQvYW5kcm9pZC1hcm02NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItYkJ5NjlwZ2ZoTUd0Q253cEMveDVRaGZ4QXovY0JnUTllbmJ0d2pmNlY5bG5QSS9oTXlUOWlXcFIxYXJtMGwza3R0VHI0TDBLU0xwS21McC9pbEtTOUE9PSJdLAoKICAgICJAZXNidWlsZC9hbmRyb2lkLXg2NCI6IFsiQGVzYnVpbGQvYW5kcm9pZC14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImFuZHJvaWQiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1UVmhkVnRRSUZ1VnBJSVIyODJidGNHQzJvR1FvU2ZaZm1CZFRpcDJhbkNhVlljcVdsWlhHY2RjS0lVa2xmWDJ3ajBKa2xOWWd6MzlPQnFoMmNxWHZjUT09Il0sCgogICAgIkBlc2J1aWxkL2Rhcndpbi1hcm02NCI6IFsiQGVzYnVpbGQvZGFyd2luLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVkxZ2lDZk00bmxIRFdFZlNja016ZVdOZFFTMzFCUUdzOS9yb3V3NlViOTF0a0s3OWFJTVRIM3E5eEh2ekg4ZDB3RHJ1NUNpMGtXQjhiM3VwL25sMTZnPT0iXSwKCiAgICAiQGVzYnVpbGQvZGFyd2luLXg2NCI6IFsiQGVzYnVpbGQvZGFyd2luLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiZGFyd2luIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItQ0pzcnk4WkdNNVZGVmV5VVlCM2NkS3BkL0g2OVBZZXo0ZUpoMVcvdDM4dnp1dGRqRWp0UDdoQjZlTEtCb09keGNBbEN0RVlIelEvUEovb1U5STR1MEE9PSJdLAoKICAgICJAZXNidWlsZC9mcmVlYnNkLWFybTY0IjogWyJAZXNidWlsZC9mcmVlYnNkLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi15WXErMzlObFRSelUyWG1vUFc0bDVJZnBsOWZxU2swbkFKWU0vVi9XVUdQRUZmZWsxZXBMSEpJa1RRTTZiQnMxc3dBcGpPNW5XZ3ZyODQzZzZUanh1UT09Il0sCgogICAgIkBlc2J1aWxkL2ZyZWVic2QteDY0IjogWyJAZXNidWlsZC9mcmVlYnNkLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiZnJlZWJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLTBGZ3ZPSjZVVU1mbHNIU1BMemRmRG5uQkJWb0NEdEJUVnluL01yV2xvVU52cS81U0ZtaDEzbDNkdmdSUGtEaWhSeGI3N1kxN01icWJDQWEyc3RyTVFRPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtYXJtIjogWyJAZXNidWlsZC9saW51eC1hcm1AMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTIta3JvNGMwUDg1R01mRllxVzRUV09wdm1GOHJGU2hiV0duckxxbHpwNFgxVE5XalJZM0pNWVVmREN0T3hQS09JWThCMFdDOEhONTFoR1A0STRoejRBYVE9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1hcm02NCI6IFsiQGVzYnVpbGQvbGludXgtYXJtNjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi0rODlVc1FUZlhkbWpJdlpTNm5Vbk9PTG9YbmtVVEI5aFI1UUFlTHJRZHpPU1dadk5TQVhBdGNSREhXdHFBVXRBbXY3Wk0xV1BPT2VTeER6enpNb2dpUT09Il0sCgogICAgIkBlc2J1aWxkL2xpbnV4LWlhMzIiOiBbIkBlc2J1aWxkL2xpbnV4LWlhMzJAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJpYTMyIiB9LCAic2hhNTEyLXlURWpvYXB5OFVQM3J2OGRCMGlwM0FmTXBSYnloU04zK2hZOG1vL2k0UVhGZUR4bWlZYkVLcDNaUmpCS2NPUDg2MlVhNGIxUERmd2x2YnV3WTdoSUdRPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtbG9vbmc2NCI6IFsiQGVzYnVpbGQvbGludXgtbG9vbmc2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItTmVxcVlrcmNHekZ3aTZDR1JHTk1PaldHR1NZT3Bxd0NqUzlmdmFVbFg1czN6d090bjFxd2cxczJpRTJzdkJlNFEvWU9HMXE2ODc1bGNBb1FLL0Y0VkE9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1taXBzNjRlbCI6IFsiQGVzYnVpbGQvbGludXgtbWlwczY0ZWxAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJub25lIiB9LCAic2hhNTEyLUljdlRsRjlkdExyZkwvTThXZ05JL3FKWUJFTlAzZWtnc0hiWVVJekV6cTVYSnp6VkVWL2ZYWTlXRlBmRUVYbXUzY2sycUpQOExHL3AzUThmN1pjMlhnPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtcHBjNjQiOiBbIkBlc2J1aWxkL2xpbnV4LXBwYzY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAicHBjNjQiIH0sICJzaGE1MTItSE95MGFMVEpUVnRvVGVHWmg0SFNYYU82TTk1cXU0azVsSmNINGd4djU2aWF5Y2Z6MVM4R08vNUpoNlg0WTFZaUkwaDdjUnlMaStIaXhNUis4OHN3YWc9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1yaXNjdjY0IjogWyJAZXNidWlsZC9saW51eC1yaXNjdjY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1pOEpVREF1ZnB6OWpPem80eUlTaENUY1h6UzA3dkVnV3p5WDNOSDJHN0xFRlZnckxFaGp3TDNhakZFNGZaSTNJNFpnaU03SkgzR1E3UmVPYlJPdlNVQT09Il0sCgogICAgIkBlc2J1aWxkL2xpbnV4LXMzOTB4IjogWyJAZXNidWlsZC9saW51eC1zMzkweEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogInMzOTB4IiB9LCAic2hhNTEyLWpGbnUrNlViTGx6SWpQUXBXQ05oNVF0cmNOZk1MamdJYXZud1BRQWZvR3g0cTE3b2NPVTlNc1EyUVZ2Rnh3UW9XcFpUOER2VExvb1R2bU9RWGtPNTFnPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgteDY0IjogWyJAZXNidWlsZC9saW51eC14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItNmUwY3ZYd3pPblZXSkhxK21za1A4RE5TcktCcjFiVUxCdm5GTHBjMUtZK2QraXJaU2daMDJUR3NlNUZzYWZLUzVqZzJlNHBidks2VFBYYUYvQTYrQ0E9PSJdLAoKICAgICJAZXNidWlsZC9uZXRic2QtYXJtNjQiOiBbIkBlc2J1aWxkL25ldGJzZC1hcm02NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibm9uZSIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItdlVua0JZeFpXNGhML2llOTFoU3FhU05qdWxPbllYRTFWU0x1c252SGcydTNqZXdKQnozWXpCOStvQ3c4REFCZVZxWkdnOTR0OXR5WkZvSG1hOGdXWlE9PSJdLAoKICAgICJAZXNidWlsZC9uZXRic2QteDY0IjogWyJAZXNidWlsZC9uZXRic2QteDY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJub25lIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItWEFnOHBJUW41Q3poT0I4b2RJY0FtNDJRc09mYTk4U0JlS1VkbzR4YThPdlg4TGJNWnFFdGdlV0U5UC9XeHQ3TWxHMlFxdmpHdGhzK25xNDhUclVpS3c9PSJdLAoKICAgICJAZXNidWlsZC9vcGVuYnNkLWFybTY0IjogWyJAZXNidWlsZC9vcGVuYnNkLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJvcGVuYnNkIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1DdDJXY0ZFQU5sRkR0cDFuVkFYU05CUER4eVUrajcrdElkLy9pSFhVMmYvbE41QW1PNHpMeWhEY3BSNUN6MXIwOG1WeHp0M0pweXQ0UG1YUTFPNis3QT09Il0sCgogICAgIkBlc2J1aWxkL29wZW5ic2QteDY0IjogWyJAZXNidWlsZC9vcGVuYnNkLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAib3BlbmJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLXhBR0doeU9ROU90bTFYdThOVDFpZkdMbkE2TTNzSnhaNml4eWxiK3ZJVVZ6dnZkNkdPQUxwd1FyWXJ0bFBvdU1xZC92U2JnZWh6NkhhVms0KzdBZmh3PT0iXSwKCiAgICAiQGVzYnVpbGQvc3Vub3MteDY0IjogWyJAZXNidWlsZC9zdW5vcy14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogInN1bm9zIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItTXcrdHp5NHBwNndaRUswK0x3cjc2cFdManJ0am1KeVVCMjN0SEtxRURQNzRSM3E5NWx1WS9iWHFYWmVZbDROWWx2d09xb1JLbEluUWlhbGdDS3k2N1E9PSJdLAoKICAgICJAZXNidWlsZC93aW4zMi1hcm02NCI6IFsiQGVzYnVpbGQvd2luMzItYXJtNjRAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1BVlVQNDI4VlFUU2RkZ3V6OWRPOW5nYitFNWFTY3lnN25PZUpEckYxSFBZdTU1NWdtemEzYkRHTVBobVZYTDhzdkRTb3FQQ3NDUGpiMjY1eUcva0xLUT09Il0sCgogICAgIkBlc2J1aWxkL3dpbjMyLWlhMzIiOiBbIkBlc2J1aWxkL3dpbjMyLWlhMzJAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJpYTMyIiB9LCAic2hhNTEyLWkxc1crMWkrb1d2UXpTZ2ZSY3h4RzJrNEk5bjNPOU5ScXk4VSt1dWdhVDJEeTdrTE85WTd3STcyaGFPYWh4Y2VNWDhoWkF6Z0dvdTFGaG5kUmxkeFJnPT0iXSwKCiAgICAiQGVzYnVpbGQvd2luMzIteDY0IjogWyJAZXNidWlsZC93aW4zMi14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItbk9UMnZaTnc2aEorejQzb1AxU1BlYS9HLzZBYk42WCtiR05oTnVxOE50Ukh5NHdzTWh3NzY1SUtMTm1uamVrN0d2aldCWVE4UTVWQm9ZVEZnOXkxVVE9PSJdLAoKICAgICJAZmxvYXRpbmctdWkvY29yZSI6IFsiQGZsb2F0aW5nLXVpL2NvcmVAMS43LjUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGZsb2F0aW5nLXVpL3V0aWxzIjogIl4wLjIuMTEiIH0gfSwgInNoYTUxMi0xSWg0V1RXeXcwK2xLeUZNY0JIR2JiNVU1RnR1SEp1dWpveXlyNXpUYVdTNUVZTWVUNkpiMkF1RGVmdHNDc0V1Y2hPK21NMmlqNStxOWNyaHlkekxoUT09Il0sCgogICAgIkBmbG9hdGluZy11aS9kb20iOiBbIkBmbG9hdGluZy11aS9kb21AMS43LjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGZsb2F0aW5nLXVpL2NvcmUiOiAiXjEuNy41IiwgIkBmbG9hdGluZy11aS91dGlscyI6ICJeMC4yLjExIiB9IH0sICJzaGE1MTItOWdaU0FJNVhNMzY4ODBQUE1tLy85ZGZpRW5nWW9DNkFtMml6RVMxRkY0MDZZRnNqdnlCTW1lSjJnNFNBanUzeFd3dHV5bk5SRkwyczloZ3hwTEk1U1E9PSJdLAoKICAgICJAZmxvYXRpbmctdWkvcmVhY3QtZG9tIjogWyJAZmxvYXRpbmctdWkvcmVhY3QtZG9tQDIuMS44IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBmbG9hdGluZy11aS9kb20iOiAiXjEuNy42IiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgInJlYWN0IjogIj49MTYuOC4wIiwgInJlYWN0LWRvbSI6ICI+PTE2LjguMCIgfSB9LCAic2hhNTEyLWNDNTJiSHdNL24vQ3hTODdGSDB5V2RuZ0VacmpkdExXL3FWcnVvNjhxZytwcks3WlE0WUdkdXQyR3lEVnBvR2VBWWUvaDg5OXJWZU9WbTZPaTQwazJBPT0iXSwKCiAgICAiQGZsb2F0aW5nLXVpL3V0aWxzIjogWyJAZmxvYXRpbmctdWkvdXRpbHNAMC4yLjExIiwgIiIsIHt9LCAic2hhNTEyLVJpQi95SWg3OHBjSXhsNmxMTUcwQ2dCWEFaMlkwZVZIcU1QWXVndSs5VTBBZVQ2WUJlaUpwZjdsYmRKTkl1Z0ZQNVNJandOUmdvNERoUjFReGkyNkdnPT0iXSwKCiAgICAiQGltZy9jb2xvdXIiOiBbIkBpbWcvY29sb3VyQDEuMS4wIiwgIiIsIHt9LCAic2hhNTEyLVRkNzZxN2o1N28vdExWZGdTNzQ2Y1lBUmZTeXhrOGlFZlJ4ZXdMOWg0T016WWhiVzRUQWNwcGwwbVQ0ZXlxWGRkaDZML2p3b003NW1vN2l4YS9wQ2VRPT0iXSwKCiAgICAiQGltZy9zaGFycC1kYXJ3aW4tYXJtNjQiOiBbIkBpbWcvc2hhcnAtZGFyd2luLWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiAiMS4yLjQiIH0sICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLWltdFEzV01KWGJNWTRmeGIvTmRwNkhCVE5WdFdDVUkwV2RvYnloZUdmNSthZDZ4WDhWSURPOHUyeEU0cWMvZnIwOENLRy83ZERzZUZ0bjZNNmcvcjN3PT0iXSwKCiAgICAiQGltZy9zaGFycC1kYXJ3aW4teDY0IjogWyJAaW1nL3NoYXJwLWRhcndpbi14NjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWRhcndpbi14NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1ZTkVGQUYvNEtRL1BlVzBOK3IrYVZWc29JWTAvcXh4aWtGMlNXZHArTlJrbU1CN3k5TEJaQVZxUTR5aEdDbS9IM0gyNzBPU3lrcW1RTUtMQmhCSkRFdz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjRAMS4yLjQiLCAiIiwgeyAib3MiOiAiZGFyd2luIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi16cWpqbzdSYXRGZkZvUDBNa1E1MWpmdUZaQm5WRTJwUmlheWRLSjFHL3JIWnZuc3JIQU9jUUFMSWk5c0E1Y281eGVuUWRUdWdDdnRiMWN1Zjc4VmY0Zz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4teDY0IjogWyJAaW1nL3NoYXJwLWxpYnZpcHMtZGFyd2luLXg2NEAxLjIuNCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi0xSU9kNXhmVmhsR3dYK3pYdjJOOTNrMHlNT052VWxBTnlsYkp3MWVUYWg4Sy9KdHBpMTVLQytXU2lhWC9uQm1ibTJIeFJNMWdaMG5TZGpTc3JaYkdLZz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm0iOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm1AMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybSIgfSwgInNoYTUxMi1iRkk3eGNLRkVMZGlOQ1ZvdjhlNDRJYTR1MmJ5QStsM1h0c0FqK1E4dGZDd082QlE4aURvallkdm9QTXFzS0RrdW9PbytYNkhaQTBzMHExMUFOTVE4QT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm02NCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybTY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1leGNqWDhEZnNJY0oxMHgxS3pyNFJjV2UxZWRDOVBxdURSUlB4M1lWQ3ZRditVNXA3WWluMnMzMmZ0emlrWG9qYjFQSUZjLzlNdDI4L3kraVJrbGtydz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1wcGM2NCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi1GTXV2R2lqTERZRzZsVytiL1V2eWlsVVd1NUF5dSszcjJkMVM4bm90aUdDSXlZVS83NmVpZzFVZk1ta1o3dndnT3J6S3psUWJGU3VRZmdtN0dZVVBwQT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1yaXNjdjY0IjogWyJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgtcmlzY3Y2NEAxLjIuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1vVkRiY1I0elVDMGNlODJ0ZXViU20reDZFVGl4dEtaQmgvcWJSRUlPY0kzY1VMekR5YjE4U3IvV2N5eDdOUlFlUXpPaUhUTmJaRkYxVXdQUzJzY3lHQT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1zMzkweCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXMzOTB4QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJzMzkweCIgfSwgInNoYTUxMi1xbXA5VnJ6Z1BnTW9HWnlQdnJRSHFrMDJ1eWpBMC9RclRPMjZUcWs2bDRaVjBNUFdJVzZMVGtxT0lvditKMXlFdTdNYkZRYURwd2R3SktoYkp2dVJ4UT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjRAMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi10SnhpaUxzbUhjOUF4MWJ6M29hT1lCVVJUWEdJUkRPREJxaHZlVkhvbnJISjkvK2s4OXFiTGwwYmNKbnMrZTR0NHJ2YU5CeGFFWnNGdFNmQWRxdVBydz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjRAMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLUZWUUh1d3gxSUl1Tm93OVFBYllVekorRW44S2NWbTlMazUrdUdVUUpIYVptTUVDWm1PbGl4OUhuSDduMVRSa1hNUzBwR3hJSm9rSVZCOVN1cVpHR1h3PT0iXSwKCiAgICAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4bXVzbC14NjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wteDY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItK0xweUJrN0w0NFpJWHd6L1ZZZmdsYVgvb2t4ZXpFU2M2VXhEU295bzJLczZKeGM0WTdzR2pwZ1U5czRQTWdxZ2pqMWdaQ3lsVGllTmFtcUExTUY3RGc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4LWFybSI6IFsiQGltZy9zaGFycC1saW51eC1hcm1AMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybSI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItOWRMcXN2d3RnMXV1WEJHWktzeGVtOTU5NSt1anYwc0o2Vmk4d2NUQU5TRnB3Vi9HT05hdDVlQ2t6UW8vMU82elJJa2gwbS84KzVCanJScjdqRFVTWnc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4LWFybTY0IjogWyJAaW1nL3NoYXJwLWxpbnV4LWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm02NCI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1iS1F6YUpSWS9ia1BPWHlLeDVFVnVwN3FrYW9qRUNHNk5MWXN3Z2t0T1pqYVhlY1NBZUNXaVp3d2lGZjMvWStPMUhyYXVpRTNGVnNHeEZnOGMyNHJaZz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGludXgtcHBjNjQiOiBbIkBpbWcvc2hhcnAtbGludXgtcHBjNjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0IjogIjEuMi40IiB9LCAib3MiOiAibGludXgiLCAiY3B1IjogInBwYzY0IiB9LCAic2hhNTEyLTd6em53TmFxVzZZdHNmckdHREE2QlJrSVNLQUFFMUpvMFFkcE5ZWE5NSHUyKzBkVHJQZmxUTE5rcGM4bDdNVVA1TTE2WkpjVXZ5c1ZXV3JNZWZacXVBPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eC1yaXNjdjY0IjogWyJAaW1nL3NoYXJwLWxpbnV4LXJpc2N2NjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXJpc2N2NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi01MWdKdUxQVEthN3BpWVBhVnM4R21CeW83L1U3LzdUWk9xK2NuWEpJSFpLYXZJUkhBUDc3ZTNOMkhFbDNkZ2lxZEQvdzB5VWZpSm5JSTc3UHVEREZkdz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGludXgtczM5MHgiOiBbIkBpbWcvc2hhcnAtbGludXgtczM5MHhAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXMzOTB4IjogIjEuMi40IiB9LCAib3MiOiAibGludXgiLCAiY3B1IjogInMzOTB4IiB9LCAic2hhNTEyLW5RdENrMFBkS2ZobzNlQzVNcmJRb2lnSjJnZDFDZ2RkVU1rYWJVaityQmV2czh0WjJjVUxPeDQ2RTdveVgrMDRXR2ZBQmdJd21NQzBWcWllVGlSNGpnPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eC14NjQiOiBbIkBpbWcvc2hhcnAtbGludXgteDY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLU1FemQ4SFBLeFZ4VmVud0FhK0pSUHdFQzdRRmpvUFd1UzVOWm5CdDZCM3B1N0VHMkdlMGlkMW9MSFpwUEpkbjNPUUsrQlFEaXc5elN0aUhCVEpRUVFRPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eG11c2wtYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGludXhtdXNsLWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItZnBySlI2R3RSc010Nkt5ZnE0NElzQ2hWWmVHTjk3Z1REMzMxd2VSMWV4MWMxcnlwREVBQk42VG0yeGExd0U2bFliNURkRW5rMDNOWlBxQTdJZDIxeWc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4bXVzbC14NjQiOiBbIkBpbWcvc2hhcnAtbGludXhtdXNsLXg2NEAwLjM0LjUiLCAiIiwgeyAib3B0aW9uYWxEZXBlbmRlbmNpZXMiOiB7ICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXhtdXNsLXg2NCI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSmc4d05UMU1Vekl2aEJGeFZpcXJFaFdER3pxeW1vM3NWN3o3WnNhV2JaTkRMWFJKWm9SR3JqdWxwNjBZWXRWNHdmWThWSUtjV2lkam9qbExjV3JkOFE9PSJdLAoKICAgICJAaW1nL3NoYXJwLXdhc20zMiI6IFsiQGltZy9zaGFycC13YXNtMzJAMC4zNC41IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvcnVudGltZSI6ICJeMS43LjAiIH0sICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1PZFdURWlWa1kyUEh3cWtiQkk4ZnJGeFFRRmVrSGFTU2tVSUprd3pjbFdaZTY0TzFYNFVsVWpxcXFMYVBiVXBNT1FrNkZCdS9IdGxHWE5ibElzMGh1dz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzItYXJtNjQiOiBbIkBpbWcvc2hhcnAtd2luMzItYXJtNjRAMC4zNC41IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1XUTNBZ1dDV1lTYjJ5dCtJRzhtbkM2SmRrOVdoczdPMGd4cGhibHNMdmRoU3BTVHRtdTY5WkcxR2tiNk51dnhzTkFDd2lQVjZjTlNaTnp0MEtQc3c3Zz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzItaWEzMiI6IFsiQGltZy9zaGFycC13aW4zMi1pYTMyQDAuMzQuNSIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAiaWEzMiIgfSwgInNoYTUxMi1GVjltLzdObWVDbVNIREQ1ajQrNHBOSThDcDNhVytKdkxvWGNUVW8wSXF5alNmQVpKOGRJVW1pangxcWFKc0lpVStIb3N3NnhNNUtpakFXUkpDU2dOZz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzIteDY0IjogWyJAaW1nL3NoYXJwLXdpbjMyLXg2NEAwLjM0LjUiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi0rMjlZTXNxWTIvOWVGRWlXOTNlcVdudUxjV2N1Zm93WGV3d1NOSVQ2VXdaZFVVQ3JNM29Gak1XSC9aNi9UTW1iNGhsRmVubWZBVmJwV2V1cDJqcnlDdz09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogWyJAanJpZGdld2VsbC9nZW4tbWFwcGluZ0AwLjMuMTMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjIjogIl4xLjUuMCIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjQiIH0gfSwgInNoYTUxMi0ya2t0LzduaUo2TWdFUHhGMGJZZFE2ZXRaYUErZlF2RGNMS2NraHkxeUlRT3phb0tqQkJqU2o2My9hTFZqWUUzcWhSdDVkdk0rdVV5ZkNnNlVLQ0JiQT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3JlbWFwcGluZyI6IFsiQGpyaWRnZXdlbGwvcmVtYXBwaW5nQDIuMy41IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogIl4wLjMuNSIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjQiIH0gfSwgInNoYTUxMi1MSTl1LytsYVlHNERzMVRES1NKVzJZUHJJbGNWWU93aTJmVUM2eEI0M2x1ZUNqZ3hWNGxmZk9DWkN0WUZpSDZUTk9YK3RRS1h4OTdUNElLSGJoeUhFUT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3Jlc29sdmUtdXJpIjogWyJAanJpZGdld2VsbC9yZXNvbHZlLXVyaUAzLjEuMiIsICIiLCB7fSwgInNoYTUxMi1iUklTZ0NJalAyMC90YldTUFdNRWk1NFFWUFJaRXhrdUQ5bEpMK1VJeFVLdHdWSkE4d1cxVHJiMWpNczFSRlhvMUNCVE5aLzVocEM5UXZtS1dkb3BLdz09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3NvdXJjZS1tYXAiOiBbIkBqcmlkZ2V3ZWxsL3NvdXJjZS1tYXBAMC4zLjExIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogIl4wLjMuNSIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjUiIH0gfSwgInNoYTUxMi1aTXAxVjhaRmNQRzVkSVduUUxyM05TSTFNaUNVN1VFVGRTL0EwRzhWL1hXSHZKdjNac0ZxdXRKbjFZNVJQbUFQWDZGM0JpRTM5N09xdmVVLzlOQ3VJQT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3NvdXJjZW1hcC1jb2RlYyI6IFsiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjQDEuNS41IiwgIiIsIHt9LCAic2hhNTEyLWNZUTkzMTBncnF4dWVXYmwrV3VJVUlhaVVhRGNqN1dPcTVmVmhFbGpOVmdSZk9VaFk5ZnkyelR2Zm9xV3NuZWJoOFNsNzBWU2NGYklDdkpuTEtCME9nPT0iXSwKCiAgICAiQGpyaWRnZXdlbGwvdHJhY2UtbWFwcGluZyI6IFsiQGpyaWRnZXdlbGwvdHJhY2UtbWFwcGluZ0AwLjMuMzEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvcmVzb2x2ZS11cmkiOiAiXjMuMS4wIiwgIkBqcmlkZ2V3ZWxsL3NvdXJjZW1hcC1jb2RlYyI6ICJeMS40LjE0IiB9IH0sICJzaGE1MTItenpOUitTZFFTREp6Yzhqb2FlUDhRUW9DUXI4TnVZeDJkSUl5dGwxUWVCRVpISjl1VzZoZWJzcllnYno4aEp3VVFhbzNUV0NNdG1mVjhOdTF0d09MQXc9PSJdLAoKICAgICJAbmFwaS1ycy93YXNtLXJ1bnRpbWUiOiBbIkBuYXBpLXJzL3dhc20tcnVudGltZUAxLjEuNCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAdHlieXMvd2FzbS11dGlsIjogIl4wLjEwLjEiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQGVtbmFwaS9jb3JlIjogIl4xLjcuMSIsICJAZW1uYXBpL3J1bnRpbWUiOiAiXjEuNy4xIiB9IH0sICJzaGE1MTItM05RTk5nQTFZU2xKYi9rTUgxaWxkQVNQOUhXNy83a1luUkkyc3pXSmFvZmFTMWhXbWJHSTRIK2QzKzIyYUd6WFhOOUlKK24rR2lGVmNHaXBKUDE4b3c9PSJdLAoKICAgICJAbmV4dC9lbnYiOiBbIkBuZXh0L2VudkAxNi4yLjYiLCAiIiwge30sICJzaGE1MTItZ2Q4SG9ITjR1Zmo3M1dtUjNKbVZvbHJwSlI0N0lMSzZMb3VQNXhFbFBnbGFWeGlyNmUxYTdWenZUdkRXa09vUFhUOXJra1R6eUN4QnU0eWVaZlp3Y3c9PSJdLAoKICAgICJAbmV4dC9zd2MtZGFyd2luLWFybTY0IjogWyJAbmV4dC9zd2MtZGFyd2luLWFybTY0QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVpKR2trY05mWWdyck1rcU9kWjd6b0xhMVRPeTBxcGNNZmsvejRNaC9GS1V6NDBnVk8rSE5RV3FtTHhmNjdaNVdCNjREUnAwZGhFYnlIZmVsKzZzSlVnPT0iXSwKCiAgICAiQG5leHQvc3djLWRhcndpbi14NjQiOiBbIkBuZXh0L3N3Yy1kYXJ3aW4teDY0QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi12L1lMQkhJWTEzMkNlZDNwdUJKN1lKS3cxbHFzQ3JnY05vMmFSSmxDRXlRcnJDZVJKbHZHbG5teGhQeE5RSTNLRTNOMURONXI5VFBOUHZrYTNucTVSUT09Il0sCgogICAgIkBuZXh0L3N3Yy1saW51eC1hcm02NC1nbnUiOiBbIkBuZXh0L3N3Yy1saW51eC1hcm02NC1nbnVAMTYuMi42IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1SUE92cWxZQmJjUWprejlWUVFEWjJUMmJBUklqWFpWMUtGbHQrVjJNcjZTVy9lNEk5ZmNLc2FBMGhkeWYyRkhvVGxzVjJ4bkJkNVk5MTJyUC8xQ2U2dz09Il0sCgogICAgIkBuZXh0L3N3Yy1saW51eC1hcm02NC1tdXNsIjogWyJAbmV4dC9zd2MtbGludXgtYXJtNjQtbXVzbEAxNi4yLjYiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVVSVVR1MStkTWt4SnNQRmdtK09lRXZxOXdmNXN1ancwRXZnWXk4MFRER0hUU0xUbklIZXFiMEV1OEEzc0M5NUlSZ2plalFMK2tDNG13KzR5UHhpQVhBPT0iXSwKCiAgICAiQG5leHQvc3djLWxpbnV4LXg2NC1nbnUiOiBbIkBuZXh0L3N3Yy1saW51eC14NjQtZ251QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLURPajE4Mm1QVjhHM1VrcmF5TG9SRU01WUVZSStEazV3djdPeDl4bDFmRmliQUVMRXNGRDBsRFBmSEllSUxsdXRNTWZkeWhsellQRUxHM3BldUthdXJ3PT0iXSwKCiAgICAiQG5leHQvc3djLWxpbnV4LXg2NC1tdXNsIjogWyJAbmV4dC9zd2MtbGludXgteDY0LW11c2xAMTYuMi42IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSEtRNVNQL1YvdWI3M1V2RjduL3plSmx4azJrTG10TDdXenJnNFdmbWtqbU5vczVvbkoydEt1N3laT1BkTDE4QTZTdmZuM21heDI5eW0rcnk3TmtLNGc9PSJdLAoKICAgICJAbmV4dC9zd2Mtd2luMzItYXJtNjQtbXN2YyI6IFsiQG5leHQvc3djLXdpbjMyLWFybTY0LW1zdmNAMTYuMi42IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1MWlhwVGxQeVM1djdIaFNtbnZzTEdQM2lJWWdZT0JuYzhyOEFybFQ1NXNHSFY4OWJSMkhsRGRCaldRK1BZNlNKTW1rOFR1VkdGdXhhbG5QM2svMER3Zz09Il0sCgogICAgIkBuZXh0L3N3Yy13aW4zMi14NjQtbXN2YyI6IFsiQG5leHQvc3djLXdpbjMyLXg2NC1tc3ZjQDE2LjIuNiIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLUYwKzRpMGg5SjZDNGVFM0VBUFdzb0NrN1VXL2Riek9qeXp4WTBxbkRVT1lGdTZGRm1kWjZsOTcvWGRWMy9OejNWWXlPN1VXanlFSlVYa0dxY29YZk1BPT0iXSwKCiAgICAiQG94Yy1wcm9qZWN0L3R5cGVzIjogWyJAb3hjLXByb2plY3QvdHlwZXNAMC4xMzAuMCIsICIiLCB7fSwgInNoYTUxMi1pYkQydXN4OUpSdTdmNXB1MnRNS01JNGNwQTROZ1hKUW9ZUlA0cFE3UHhtbjFsNmsvNTNxV3RRV1pheWhZeTNYNFFaa3Q5ME90K21KRWFlWG91aW82UT09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWFuZHJvaWQtYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLWFuZHJvaWQtYXJtNjRAMS4wLjEiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItZkpJM0kwcjNDM09qL3pkQkNwYUNtQlJaWWYwN3hwYXE0eUNmRERvU0ZtK2JlV056YklsMjZwdVc4UnJhVWR1Z29Kdy85NXplck5PbjZqYXNBaHpTbWc9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1kYXJ3aW4tYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLWRhcndpbi1hcm02NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLWNLbkFoV0VzVjdUUGNBLzVFQXRlRHA2S2NKWkJRMkcrQnFFN3pheU1NaTdrTXZ3UnNidjdXVDlhT25uMFdObDRTS0VJZjQzdmpTMzFpVVB1ODBuelhnPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NCI6IFsiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1ZS3JWd1FqSVJCUG8rNUcvdTAzd0dqYmR5NHE3cHl6Q2U5M0RLOVZKN3prVm1lZzhMSjdHYmdzaUhXZFI0eFNvZTRDQVhSRDdCY2pnYnRyNjRia1hOZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWZyZWVic2QteDY0IjogWyJAcm9sbGRvd24vYmluZGluZy1mcmVlYnNkLXg2NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItei9vQnNSRW80NlNzRnFCd1l0RmUwa3BKZUJpakFUNDhPL1dYTEk0c3VpQ0xCa3IwM1JUdFRKTUN6U2REZDJ6bmxoOFZKaXpMMDlYVmtRZ2s4SVpvbnc9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmQDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItaWs4cTdHTTExenh2WXhGYzJQZURjVDZUQnZoQ1FNYVV4ZnBoL001bDlzS3VUcy9TamczTCtCeXcwRjd3MFpWTEJabXgzMFArZ0cwRUN6ek4rTUZjbVE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1nbnUiOiBbIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LWFybTY0LWdudUAxLjAuMSIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItUW9TeDJFa3lycmRaNmtjeUU4c3RxWjYydDBZcmE4RnM1aWE5bE94SnJoNlRNUUpLN2dRS21zY2RUSGY3cE9YS1JFS3JWd090SmNRRzNxVlNmYzg2NkE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsQDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi11d053RnB3S2VOaVphd2ZBV0JnZzBWSXp0UFRWM2loaGgxdlYzMzRoOWl2bk5Mb3J4blFNVTZGejh3RzFaYjRRaDlMQzEvTWtjeVQzWWxEWEczUnNnZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXBwYzY0LWdudSI6IFsiQHJvbGxkb3duL2JpbmRpbmctbGludXgtcHBjNjQtZ251QDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi16WTFidWw3T1dyN0RGQmlKKyt3b2ZYdm5yOEI0NWNlM1FzUVVoS3JJaFhzeWdBaDdiVGt3eWVNMWJpMWEyZzVDL3lDL044VFp5R0RFb01mbS9sOW1wZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXMzOTB4LWdudSI6IFsiQHJvbGxkb3duL2JpbmRpbmctbGludXgtczM5MHgtZ251QDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJzMzkweCIgfSwgInNoYTUxMi0wZnJsc1QvZjRGdDZJN1NNRVNUS25GM2Nac2RpY1FuMWRDTWtGL2pUOXdETEUrZ0dvaVFmdjFubVQ5ZStzN3MvZmVrdnZ5NnRaTTJqSHZJMnRrYkpEUT09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1nbnUiOiBbIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1nbnVAMS4wLjEiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1YQUJWbUdwOVRnMFdzcFRWdndkdVRjNGZwcXk2Sm5BVXJTUWU2T3V5cUQvMDNuSTdyME85T1dVa01Jd0ZyaktBSXFvbHZxb0E0WnJKcHBnd0UwR3htdz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1tdXNsIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC14NjQtbXVzbEAxLjAuMSIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLWJWNGZ6c3d1elZjS0Q5MG8vVk02UXFLeG54bERxMGcyQklTRExOVm14cm5ocHYxRERieVBoQ0lqWWZ2ellMVitNdmtLS25RdDJRNkFPODZTRUJVTFVRPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctb3Blbmhhcm1vbnktYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLW9wZW5oYXJtb255LWFybTY0QDEuMC4xIiwgIiIsIHsgIm9zIjogIm5vbmUiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLS9NaDBaaHEzT1A3ZlZzMGtjUUhaUDZsWkV0aE1HVGFTZjhVQlFZU0ZFWkRXR1hYbEVDK25KNkVxZW5hSzJ0NExCWE1lM0ErSy9HMkJWWFhkdE9yNFBRPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctd2FzbTMyLXdhc2kiOiBbIkByb2xsZG93bi9iaW5kaW5nLXdhc20zMi13YXNpQDEuMC4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvY29yZSI6ICIxLjEwLjAiLCAiQGVtbmFwaS9ydW50aW1lIjogIjEuMTAuMCIsICJAbmFwaS1ycy93YXNtLXJ1bnRpbWUiOiAiXjEuMS40IiB9LCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItKzF4YzlYNDVsOHVmc0JBbTZHanZ4MnFEUklZOWxUVnQwY2dXTmNKKzFnZGhYdmtieGVQQTYweVJUd1NUdVhMMDlDTWh5Sm1qcFY3RTNOb3l4YnFGUVE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjIjogWyJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjQDEuMC4xIiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi0xRCtVcVpkZm51UitKeTFHZ01Kd2k4NWJENDBIMjF1Tm1PUFJXUWh3NG9SU3VvbFovQjVyaXhaNDVESzJLWE9UQ3ZtVkNlY2F1V2dFaGJ3OGJJN3RPdz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLXdpbjMyLXg2NC1tc3ZjIjogWyJAcm9sbGRvd24vYmluZGluZy13aW4zMi14NjQtbXN2Y0AxLjAuMSIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLUlOQXljYVd1aGxPSzN3azRtUkhHc2Rnd1lXbWQ5Y0NoZFBkRTlid1dteTZybjlWcVZOWU5GR2hPZFhyb2ZYVXh3SEluY1NpUE5iOHRObThrbkRWSWVRPT0iXSwKCiAgICAiQHJvbGxkb3duL3BsdWdpbnV0aWxzIjogWyJAcm9sbGRvd24vcGx1Z2ludXRpbHNAMS4wLjEiLCAiIiwge30sICJzaGE1MTItMmo5Ykd0NUpoOGhqK3ZQdGd6UHRsNzJqMHlSeEhBeXVtb282VE5mQWpzTEIwNFV0cFN2UGJQY0RjQk14ejduKzlDWUIwYzFHeFFGeFlSZzJqaW1xR3c9PSJdLAoKICAgICJAc3RhbmRhcmQtc2NoZW1hL3NwZWMiOiBbIkBzdGFuZGFyZC1zY2hlbWEvc3BlY0AxLjEuMCIsICIiLCB7fSwgInNoYTUxMi1sMmFGeTVqQUxobmlHNUhncXJENmpYTGkvclVXckt2cU4vcUp4NnlvSnNnS2hibFZkK2lxcVU0UkNYYXZtL2pQaXR5RG81VEN2S01ucGpLbk9yaXkwdz09Il0sCgogICAgIkBzd2MvaGVscGVycyI6IFsiQHN3Yy9oZWxwZXJzQDAuNS4xNSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi44LjAiIH0gfSwgInNoYTUxMi1KUTVUdU1pNDVPd2k0L0JJTUFKQm9TUW9PSnUxMm9Pay9nQURxbGNVTDlKRWRIQjh2eWpVU3N4cWVOWG5tWEhqWUtNaTJXY1l0ZXpHRUVocVVJL0UyZz09Il0sCgogICAgIkB0YWJieV9haS9oaWpyaS1jb252ZXJ0ZXIiOiBbIkB0YWJieV9haS9oaWpyaS1jb252ZXJ0ZXJAMS4wLjUiLCAiIiwge30sICJzaGE1MTItcjViQ2xLcmNJdXNEb28wNDlkU0w4Q2F3bkhSNm1SZER3aGxRdUlnWlJOdHk2OHEweDhrM0xmMUJ0UEFNeFJmL0dnbkhCbklPNHVqZDMrR1FkTFd6eFE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvbm9kZSI6IFsiQHRhaWx3aW5kY3NzL25vZGVANC4zLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvcmVtYXBwaW5nIjogIl4yLjMuNSIsICJlbmhhbmNlZC1yZXNvbHZlIjogIl41LjIxLjAiLCAiaml0aSI6ICJeMi42LjEiLCAibGlnaHRuaW5nY3NzIjogIjEuMzIuMCIsICJtYWdpYy1zdHJpbmciOiAiXjAuMzAuMjEiLCAic291cmNlLW1hcC1qcyI6ICJeMS4yLjEiLCAidGFpbHdpbmRjc3MiOiAiNC4zLjAiIH0gfSwgInNoYTUxMi1hRmI0Z1VoRk9nZGg5QVhvNEl6QkVPekJra0F4bTlWaWd3REpuTUlZdjNsY2ZYQ0pWZXNOZmJFYUJsNEJOZ1ZSeWlkOTJBbWR2aXF3QlVCUktTZVkzZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZSI6IFsiQHRhaWx3aW5kY3NzL294aWRlQDQuMy4wIiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQHRhaWx3aW5kY3NzL294aWRlLWFuZHJvaWQtYXJtNjQiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtZGFyd2luLXg2NCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtZnJlZWJzZC14NjQiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybS1nbnVlYWJpaGYiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybTY0LWdudSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtbXVzbCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LWdudSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LW11c2wiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLXdhc20zMi13YXNpIjogIjQuMy4wIiwgIkB0YWlsd2luZGNzcy9veGlkZS13aW4zMi1hcm02NC1tc3ZjIjogIjQuMy4wIiwgIkB0YWlsd2luZGNzcy9veGlkZS13aW4zMi14NjQtbXN2YyI6ICI0LjMuMCIgfSB9LCAic2hhNTEyLUY3SFpHQmVOOUkwL0F1dUpTNVB3Y0Q4eGF5eDVyaTVHaGpZVURCRVZZVWtleHlBL2dpd2JETmpSVnJ4U2V6RTNUMjUwT1UySy93cC9sdFd4M1VPZWZnPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWFuZHJvaWQtYXJtNjQiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1hbmRyb2lkLWFybTY0QDQuMy4wIiwgIiIsIHsgIm9zIjogImFuZHJvaWQiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVRKUGlxNjd0S2xMdU9iUDZSa3d2VkdEb3hDTUJWdERnS2tMZmEvdXlqNy9GeXh2UXdIUytVT25WclhYZ2JFc2ZVYU1naVZ2QzRLYkpuUnIyNmhvNE5nPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NCI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NEA0LjMuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLW9NTi9XWlJiK1NPMzdCbVVFbEVnZUVXdVU4RS9IWFJraU9EeEp4TGUxVVRIVlhMcmRWU2dmYUpWN3BTbGhSR01TT2lYTHV4VElqZnNGM3dZdno4Y2dRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi14NjQiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1kYXJ3aW4teDY0QDQuMy4wIiwgIiIsIHsgIm9zIjogImRhcndpbiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLU42Q1VtdTRhNmJLVkFEZnc3N3AraXc2WWQ5UTNPQmhlMHZlYURYK1FhemZ1VllsUXNIZkRneEJyc2pRL0lXK3p5d0w4bVRyTmQwU2RKVC96Z3R2TWRBPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWZyZWVic2QteDY0IjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtZnJlZWJzZC14NjRANC4zLjAiLCAiIiwgeyAib3MiOiAiZnJlZWJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLXpETDVoQmtRZEg1QzZNcHFiSzNnUUFnUDgwdHNNd1NJMjZ2ak96akp0TkNNVW8wbEZnT0l0ekhLQkl1cE9aTlF4dDNvdVBIN1JQaHZOaGlUZkNlNUNRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybS1nbnVlYWJpaGYiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC1hcm0tZ251ZWFiaWhmQDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItUjA2SGROaTdBN09Fb01zZjZkNHRqWjcxUkNXblpRUEhqMm1ub3RTRlVSak5MZEJDK2NJZ1hRN2w4MUNxZW9pUWZ0amY2T09ibHhYTUluTWdOMlZ6TUE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtZ251IjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtZ251QDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1xVEpIRUxYOGpldGpoUlFIQ0xpbGtWTG15YnB6TlFBdGFJL2dhb1ZvaWRuL3VmYk5EYkFvOEtsSzJKK3lQb2M4d1F4dkR4Q21oLzVscjhuQzErbFRiZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC1hcm02NC1tdXNsIjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtbXVzbEA0LjMuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItWjZzdWtpUXNuZ25XTytsMzlYNHBQYmlXVDgxSUMrUExLRitQSHhJbHlaYkdOYjlNT0RmWWxYRVZsRnZlajVCT1pJbldYMDFrVnl6ZUx2SHNYaGZjelE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LWdudSI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LXg2NC1nbnVANC4zLjAiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1EUk5kUVJwU0d6UkdmQVJWdVZreHZNOFExMm5oMTlsNEJGL0c3ekdBMW9lKzl3Y0M2c2FGQkhUSVNycEljS3poaVh0U3JsU3JsdUNmdk11bGVkb0NUUT09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC14NjQtbXVzbCI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LXg2NC1tdXNsQDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItWjBJQURiRG84Ymg2STdoMklRTXg2MDFBZFhCTGZGcEVkVW90ZnQ4NmV2ZC84WlBmbFplOUNPUE84UTF2dytwZkxXSVVvOXpOL0pHWnZ3dUFKcWR1cWc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kiOiBbIkB0YWlsd2luZGNzcy9veGlkZS13YXNtMzItd2FzaUA0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAZW1uYXBpL2NvcmUiOiAiXjEuMTAuMCIsICJAZW1uYXBpL3J1bnRpbWUiOiAiXjEuMTAuMCIsICJAZW1uYXBpL3dhc2ktdGhyZWFkcyI6ICJeMS4yLjEiLCAiQG5hcGktcnMvd2FzbS1ydW50aW1lIjogIl4xLjEuNCIsICJAdHlieXMvd2FzbS11dGlsIjogIl4wLjEwLjEiLCAidHNsaWIiOiAiXjIuOC4xIiB9LCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItSE5aR09VeEVtRWxrc1lSN1M2c0M1alRlTkdwb2JBc3k5dTdHdTBBc2tKOC8yMEZSOUdxZWJVeUIrSEJjVS9heDZCSHVpdUppK09kYTRCK1lYNkgxeUE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2luMzItYXJtNjQtbXN2YyI6IFsiQHRhaWx3aW5kY3NzL294aWRlLXdpbjMyLWFybTY0LW1zdmNANC4zLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVBlK1JQVlRpMVQrcXltdXVScGNkdndTVlpqbmxsL2Y3bjhnQnhNTWgzeExUY3RNREtxcGRmR2ltYk15aW9xdExoVVlaeGRKOXdHTmhWN01LSHZnWnNRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLXdpbjMyLXg2NC1tc3ZjIjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtd2luMzIteDY0LW1zdmNANC4zLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1NdnJmMmtYVy95ZVcvT1RlelpsQ0dPaXJYUmNVdUxJQngvNVkxMkJhUE03d0pvcnlHNmRmUy9OSkw4YUJQcXRURXgvVm00VDR2S3pGVWNLRFQrVEtVQT09Il0sCgogICAgIkB0YWlsd2luZGNzcy9wb3N0Y3NzIjogWyJAdGFpbHdpbmRjc3MvcG9zdGNzc0A0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYWxsb2MvcXVpY2stbHJ1IjogIl41LjIuMCIsICJAdGFpbHdpbmRjc3Mvbm9kZSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUiOiAiNC4zLjAiLCAicG9zdGNzcyI6ICJeOC41LjEwIiwgInRhaWx3aW5kY3NzIjogIjQuMy4wIiB9IH0sICJzaGE1MTItSm0wNVRqeCs5eUNMR3Y1cXcxYys4NFBzZHM4TW55ckVRWUNCK0ZGazJsZ0dpVWpsUnFkeGtlNG1WVHVZcmoyeG5WWnFLaW0yQXByNXlTdVFSWUF3L3c9PSJdLAoKICAgICJAdHlieXMvd2FzbS11dGlsIjogWyJAdHlieXMvd2FzbS11dGlsQDAuMTAuMiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi40LjAiIH0gfSwgInNoYTUxMi1Sb0J2SjJYMHd1S2xXRklqcndmZkd3MUlxWkhLUXF6SWNoS2FhZFpaZm5OcHNBWXAybU0waDM2SnRQQ2pOREFIR2dZZXovMTV1TUJwZkd3Y2hoaU1nZz09Il0sCgogICAgIkB0eXBlcy9jaGFpIjogWyJAdHlwZXMvY2hhaUA1LjIuMyIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAdHlwZXMvZGVlcC1lcWwiOiAiKiIsICJhc3NlcnRpb24tZXJyb3IiOiAiXjIuMC4xIiB9IH0sICJzaGE1MTItTXc1NThvZUE5ZkZidjY1L3k0bUh0WERzOWJQbkZNWkFML2p4ZFBGVXBPSEhJWFg5MW1jZ0VIYlM1TGFocitwd1pGUjhBN0dRbGVSV2VJNmNHRkMyVUE9PSJdLAoKICAgICJAdHlwZXMvZGVlcC1lcWwiOiBbIkB0eXBlcy9kZWVwLWVxbEA0LjAuMiIsICIiLCB7fSwgInNoYTUxMi1jOWg5ZFZWTWlnTVBjNGJ3VHZDNWR4cXRxSlp3UVBlUHNXalBscFNPbm9qYm9yNnBHcWRrNTQxbGZBN0FxRlFyNXBCMUJSZHEwanVZOWRiODFCd3lGdz09Il0sCgogICAgIkB0eXBlcy9lc3RyZWUiOiBbIkB0eXBlcy9lc3RyZWVAMS4wLjkiLCAiIiwge30sICJzaGE1MTItR2hkUGd5MWVsNC9JbVAwNVgwNVV3NGN3Mi9NOTNCQ1VtbkV2V1pOU3RsQ3pFS01FNEZraytZcG9BNU9pSE5RbW9TN0NhZmI4WGEzUHlhOG0xUXJ6ZWc9PSJdLAoKICAgICJAdHlwZXMvbm9kZSI6IFsiQHR5cGVzL25vZGVAMjIuMTkuMTkiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidW5kaWNpLXR5cGVzIjogIn42LjIxLjAiIH0gfSwgInNoYTUxMi1keWgveE8yRmg1YllyZldhYXFHclJRUUdrTmRtWXc2QW1hQVV2WWVVTU5UV1F0dmI3OTZpa0xkbVRjaFJtT2xPaUlKMVREWGZXZ1Z4MVFrVWxRNkhldz09Il0sCgogICAgIkB0eXBlcy9yZWFjdCI6IFsiQHR5cGVzL3JlYWN0QDE5LjIuMTUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiY3NzdHlwZSI6ICJeMy4yLjIiIH0gfSwgInNoYTUxMi1lUndjR05IdmUrRThxdEVRU1NSbDZ1cmgrckZvcDR2OGdtNk84ckd2MjVDb2RidkZkTGpBMXZWUTFLa2lGRTB3MFVQT25iOHREaUZLTDVscDBydFk1UT09Il0sCgogICAgIkB0eXBlcy9yZWFjdC1kb20iOiBbIkB0eXBlcy9yZWFjdC1kb21AMTkuMi4zIiwgIiIsIHsgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJAdHlwZXMvcmVhY3QiOiAiXjE5LjIuMCIgfSB9LCAic2hhNTEyLWpwMkwvZVk2Zm4rS2dWVlFBT3FZSXRiRjBWWS9ZQXBlNU16MkYwYXlrU084Z3gzMWJZQ1p5dlNlWXhDSEt2ekhHNWVaamMrenlhUzVCckJXeWEyK2tRPT0iXSwKCiAgICAiQHZpdGVzdC9leHBlY3QiOiBbIkB2aXRlc3QvZXhwZWN0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBzdGFuZGFyZC1zY2hlbWEvc3BlYyI6ICJeMS4xLjAiLCAiQHR5cGVzL2NoYWkiOiAiXjUuMi4yIiwgIkB2aXRlc3Qvc3B5IjogIjQuMS42IiwgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAiY2hhaSI6ICJeNi4yLjIiLCAidGlueXJhaW5ib3ciOiAiXjMuMS4wIiB9IH0sICJzaGE1MTItN0VIRHF1UHRoQUxTVjBqaGhqZ0VXOEZYYXZpTXg3clNxdThXNm9xQ29BdU9oS292ODE0UDk5UURWMXB4TUEzUVB2MjFZdWR2Sm5nSWhqck5JNG9wTGc9PSJdLAoKICAgICJAdml0ZXN0L21vY2tlciI6IFsiQHZpdGVzdC9tb2NrZXJANC4xLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHZpdGVzdC9zcHkiOiAiNC4xLjYiLCAiZXN0cmVlLXdhbGtlciI6ICJeMy4wLjMiLCAibWFnaWMtc3RyaW5nIjogIl4wLjMwLjIxIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIm1zdyI6ICJeMi40LjkiLCAidml0ZSI6ICJeNi4wLjAgfHwgXjcuMC4wIHx8IF44LjAuMCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIm1zdyIsICJ2aXRlIl0gfSwgInNoYTUxMi1NQ0ZjNjNjek1qRUluT2xjWTJjcFFDdkNOK0tnYkFuKzYweHU5Y01nUDRzS2FMQzVKTkFLdzdKSDhRZEFub0FDODhoVzFJaVNOWitHZ1ZYbE4xVWNNUT09Il0sCgogICAgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6IFsiQHZpdGVzdC9wcmV0dHktZm9ybWF0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRpbnlyYWluYm93IjogIl4zLjEuMCIgfSB9LCAic2hhNTEyLWg1U3hEL0l6TmhaWW5yU1pSc1VaUUlDK3ZEMEdZOGNVdnEwaXdzbWtGS2l4UkNLTExXcUNYYS9GSVE0UzFSK3NJK1BHb29qa0hzZE5yYlppTTlRcGd3PT0iXSwKCiAgICAiQHZpdGVzdC9ydW5uZXIiOiBbIkB2aXRlc3QvcnVubmVyQDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAicGF0aGUiOiAiXjIuMC4zIiB9IH0sICJzaGE1MTItbk9QQ21uMit5RDBaTm1LZHNYR3YvVXhNTVdiTXVLZUQ2R3lZbmNOd2RrWUR4cFF2clBTS1lqMnJXdURqQzJZNGI2dzZoamlwNWRCS0Z6RVV1WmUzdkE9PSJdLAoKICAgICJAdml0ZXN0L3NuYXBzaG90IjogWyJAdml0ZXN0L3NuYXBzaG90QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6ICI0LjEuNiIsICJAdml0ZXN0L3V0aWxzIjogIjQuMS42IiwgIm1hZ2ljLXN0cmluZyI6ICJeMC4zMC4yMSIsICJwYXRoZSI6ICJeMi4wLjMiIH0gfSwgInNoYTUxMi1ZaHNkRTZ4QVZmVERtemp4TDJaRFV2amorWnNneU9LZStUZFF6cWtENzJ3SU9tSGthOE51R1E2TnBUTlp2OUQyWjYzZmJ3V0tKUGVWcEV3NEVRZ1l4dz09Il0sCgogICAgIkB2aXRlc3Qvc3B5IjogWyJAdml0ZXN0L3NweUA0LjEuNiIsICIiLCB7fSwgInNoYTUxMi1KRkt4TXg2dWRod0toL0xkbzI3MGUxN1FYNzEwdmd1bk1rdVBBdlhqSFN2QzZvcUxXQUhoVmhqZy9JNzFxMHUwQ0JTRXJJT0RWMUtqdjBGUU5TV2pkZz09Il0sCgogICAgIkB2aXRlc3QvdXRpbHMiOiBbIkB2aXRlc3QvdXRpbHNANC4xLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHZpdGVzdC9wcmV0dHktZm9ybWF0IjogIjQuMS42IiwgImNvbnZlcnQtc291cmNlLW1hcCI6ICJeMi4wLjAiLCAidGlueXJhaW5ib3ciOiAiXjMuMS4wIiB9IH0sICJzaGE1MTItRnhJWStVODFSM0xHS0N4YUhIRlJRNStnNi9pUmdHTG1lSFdkcDJBbWo0bGpRUnJFSVdIbVp5RGZEWUJSWmxweXFBN3FLeHRTOUREMWRoazhSblJJVlE9PSJdLAoKICAgICJhY29ybiI6IFsiYWNvcm5AOC4xNi4wIiwgIiIsIHsgImJpbiI6IHsgImFjb3JuIjogImJpbi9hY29ybiIgfSB9LCAic2hhNTEyLVVWSnlFOU10dE9zQlFJREt3MXNrYjluQXdRdVI1d3VHRDMrODJLNkpnSmxtL1krS0k5Mm9Oc01OR1pDWWREc1Z0UkhTYWswcGNWNURubzUrNGpoOXN3PT0iXSwKCiAgICAiYW5zaS1yZWdleCI6IFsiYW5zaS1yZWdleEA1LjAuMSIsICIiLCB7fSwgInNoYTUxMi1xdUpRWGxUU1VHTDJMSDlTVVhvOFZ3c1k0c29hbmhnbzZMTlNtODRFMUxCY0U4czNPMHdwZGlSenlSOXovWlpKTWxNV3YzN3FPT2I5cGRKbE1VRUtGUT09Il0sCgogICAgImFuc2ktc3R5bGVzIjogWyJhbnNpLXN0eWxlc0A0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjb2xvci1jb252ZXJ0IjogIl4yLjAuMSIgfSB9LCAic2hhNTEyLXpiQjlyQ0pBVDFyYmppVkRiMmhxS0ZITllMeGd0azhOVVJ4WjNJWndEM0Y2TnR4YlhaUUNublNpMUxreCtJRG9oZFBsRnAyMjJ3VkFMSWhlWkpRU0VnPT0iXSwKCiAgICAiYXNzZXJ0aW9uLWVycm9yIjogWyJhc3NlcnRpb24tZXJyb3JAMi4wLjEiLCAiIiwge30sICJzaGE1MTItSXppOFJRY2ZmcUNlTlZnRmlnS2xpMXNza2xJYnBIbkNZYzZBa25YR1lvQjZnckpxeWVieTdqdjEySlVRZ21UQW5JRG5iY2sxdXhrc1Q0ZHpOM1BXQkE9PSJdLAoKICAgICJiYXNlbGluZS1icm93c2VyLW1hcHBpbmciOiBbImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZ0AyLjEwLjMxIiwgIiIsIHsgImJpbiI6IHsgImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZyI6ICJkaXN0L2NsaS5janMiIH0gfSwgInNoYTUxMi1NdWpZTzNlUDcydXZtU0UwaTR3bHRzb2RSZklwWkFUUDNqdnpSTlJHR3hneklkN2FWb2NWSkpWM25mMDFxbnp6S0ZHeFFWQzlicFd4bDVjanhUci83UT09Il0sCgogICAgImJ1ZmZlci1mcm9tIjogWyJidWZmZXItZnJvbUAxLjEuMiIsICIiLCB7fSwgInNoYTUxMi1FK1hRQ1J3U2JhYWlDaHR2Nms2RHdnYytieCtCczZ2dUtKSEhsNWtveC9CYUtiaGlYenFRT3dLNGNPMjJ5RWxHcDJPQ21qd1ZoVDNIbXhneVBHbkpmUT09Il0sCgogICAgImNhbml1c2UtbGl0ZSI6IFsiY2FuaXVzZS1saXRlQDEuMC4zMDAwMTc5MyIsICIiLCB7fSwgInNoYTUxMi1pd1NzWVdhQ09vaDI2Y1Y4TndOUlZpSGxyZlV2WXNIRGZSVmNidG13MEtnNlBKSVpaWHdNa2oxNDQyRllMQkdrZVVmMWp1QXNVM0RUZnhXNTc5bXJQQT09Il0sCgogICAgImNoYWkiOiBbImNoYWlANi4yLjIiLCAiIiwge30sICJzaGE1MTItTlVQUmx1T2ZPaVRLQkt2V1B0U0Q0UGhGdldDcU9pMEJHU3ROV3M1N1g5anM3WEdUcHJTbUZvejVGMHRXaFI0V1BqTmVSOWpYcWRDNy9VcFNKVG5sUmc9PSJdLAoKICAgICJjaGFsayI6IFsiY2hhbGtANC4xLjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiYW5zaS1zdHlsZXMiOiAiXjQuMS4wIiwgInN1cHBvcnRzLWNvbG9yIjogIl43LjEuMCIgfSB9LCAic2hhNTEyLW9LbmJoRnlSSVhwVXVlejhpQk1teUVhNG5iajRJT1F5dWhjL3d5OWtZNy9XVlBjd0lPOVZBNjY4UHU4UmtPNyswRzc2U0xST2V5dzlDcFEwNjFpNG1BPT0iXSwKCiAgICAiY2xpZW50LW9ubHkiOiBbImNsaWVudC1vbmx5QDAuMC4xIiwgIiIsIHt9LCAic2hhNTEyLUlWM091MGpTTXpacmQzcFo0OG5Ma1Q5REE3QWcxcG5QemFpUWhwVzdjM1JiY3FxenZ6elZ1K0w4Z2ZxTXAvOElNMk1RdFNpcWFDeHJyY2Z1OEk4ck1BPT0iXSwKCiAgICAiY2xpdWkiOiBbImNsaXVpQDguMC4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInN0cmluZy13aWR0aCI6ICJeNC4yLjAiLCAic3RyaXAtYW5zaSI6ICJeNi4wLjEiLCAid3JhcC1hbnNpIjogIl43LjAuMCIgfSB9LCAic2hhNTEyLUJTZU5ueXVzNzVDNC8vTlE5Z1F0MS9jc1RYeW8vOFNiK2FmTEFrekFwdEZ1TXNvZDlIRm9rR051ZFpwaS9vUVY3M2huVksrc1IrNVBWUk1kK0RyN1lRPT0iXSwKCiAgICAiY2xzeCI6IFsiY2xzeEAyLjEuMSIsICIiLCB7fSwgInNoYTUxMi1lWW0wUVdCdFVyQldaV0cwZDM4Nk9HQXcxNlo5OTVQaU9WbzJCN2JqV1NiSGVkR2w1ZTBaV2FxNjVrT0dnVVNOZXNFSURrQjlJU2JUZy9KSzlkaENaQT09Il0sCgogICAgImNvbG9yLWNvbnZlcnQiOiBbImNvbG9yLWNvbnZlcnRAMi4wLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiY29sb3ItbmFtZSI6ICJ+MS4xLjQiIH0gfSwgInNoYTUxMi1SUkVDUHNqN2l1L3hiNW9LWWNzRkhTcHBGTm5zai81Mk9WVFJLYjR6UDVvblh3VkYzelZtbVRvTmNPZkdDK0NSRHBmSy9VNTg0Zk1nMzhaSENhRWxLUT09Il0sCgogICAgImNvbG9yLW5hbWUiOiBbImNvbG9yLW5hbWVAMS4xLjQiLCAiIiwge30sICJzaGE1MTItZE95KzNBdVczYTJ3TmJaSEl1TVpwVGNnakd1TFUvdUJML3ViY1pGOU9YYkRvOGZmNE84eVZwNUJmMGVmUzh1RW9ZbzVxNEZ4N2RZOU9nUUdYZ0FzUUE9PSJdLAoKICAgICJjb21tYW5kZXIiOiBbImNvbW1hbmRlckAyLjIwLjMiLCAiIiwge30sICJzaGE1MTItR3BWa21NOHZGMnZRVWtqMkx2Wm1EMzVKeGVKT0xDd0o5Y1VrdWd5azJudWhidjMrbUp2cExZWXQrMCtVU014RStvaitleS9sSkVuaFp3NzV4L09NY1E9PSJdLAoKICAgICJjb25jdXJyZW50bHkiOiBbImNvbmN1cnJlbnRseUA5LjIuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjaGFsayI6ICI0LjEuMiIsICJyeGpzIjogIjcuOC4yIiwgInNoZWxsLXF1b3RlIjogIjEuOC4zIiwgInN1cHBvcnRzLWNvbG9yIjogIjguMS4xIiwgInRyZWUta2lsbCI6ICIxLjIuMiIsICJ5YXJncyI6ICIxNy43LjIiIH0sICJiaW4iOiB7ICJjb25jIjogImRpc3QvYmluL2NvbmN1cnJlbnRseS5qcyIsICJjb25jdXJyZW50bHkiOiAiZGlzdC9iaW4vY29uY3VycmVudGx5LmpzIiB9IH0sICJzaGE1MTItZnNmck8wTXhWNjRabm95OC9sMXZWSWpqSGEyOVNaeXlxUGdRQndoaURjYVc4d0pjMlczWFdWT0d4NE0zb0pCbnYvemRVWklJcDFnRGVTOThHelA4Tmc9PSJdLAoKICAgICJjb252ZXJ0LXNvdXJjZS1tYXAiOiBbImNvbnZlcnQtc291cmNlLW1hcEAyLjAuMCIsICIiLCB7fSwgInNoYTUxMi1LdnA0NTlIclYyRkVKMUNBc2kxS3UrTVkza2FzSDE5VEZ5a1R6MnhXbU1lcTZiazJOVTNYWHZmSitRNjFtMHhrdFd3dCsxSFNZZjNKWnNUbXMzYVJKZz09Il0sCgogICAgImNzc3R5cGUiOiBbImNzc3R5cGVAMy4yLjMiLCAiIiwge30sICJzaGE1MTItejFIR0tjWXkyeEE4QUdRZndybjBQQXkrUEI3WC9HU2ozVVZKVzlxS3luNDN4V2ErZ2w1blhtVTRxcUxNUnpXVkxGQzhLdXNVWDhULzBrQ2lPWXBBSVE9PSJdLAoKICAgICJkYXRlLWZucyI6IFsiZGF0ZS1mbnNANC4yLjEiLCAiIiwge30sICJzaGE1MTItMzdSaFNkeGFHMXN1ZW42VkRDemE2ck5yUWZvb3lRaDU3SEZWUHdRR0VxMlFXbGlWTHpQUVo4T2EwMTd3ZU91K0haQ256STdOM1BmL3d5b0JLZkVxckE9PSJdLAoKICAgICJkYXRlLWZucy1qYWxhbGkiOiBbImRhdGUtZm5zLWphbGFsaUA0LjEuMC0wIiwgIiIsIHt9LCAic2hhNTEyLWhUSVAveit0K3FLd0JEY21tc25taldUZHV4Q2crNUtmZHFXUXZiMlgvOEM5K2tuWVk2ZXBOL3BmeGREdXlWbFNWZUZ6MHNNNWVFZndJVVE3MFU0Y2tnPT0iXSwKCiAgICAiZGV0ZWN0LWxpYmMiOiBbImRldGVjdC1saWJjQDIuMS4yIiwgIiIsIHt9LCAic2hhNTEyLUJ0ajJCT09PODNvM1d5SDU5ZThNZ1hzeEVRVmNhcmtVT3BFWXJ1YkIwdXJ3bk4xMHlRMzY0cnNpQnlVMTFuWmxxV1labTA1aS9vZjdpbzRtemloQnRRPT0iXSwKCiAgICAiZW1vamktcmVnZXgiOiBbImVtb2ppLXJlZ2V4QDguMC4wIiwgIiIsIHt9LCAic2hhNTEyLU1Tall6Y1dOT0EwZXdBSHB6ME14cFlGdndnNnlqeTFORzN4dGVvcXo2NDRWQ28vUlBnbnIxL0dHdCtpYzNpSlR6UThFdTNUZE0xNFNhd25WVW1HRTZBPT0iXSwKCiAgICAiZW5oYW5jZWQtcmVzb2x2ZSI6IFsiZW5oYW5jZWQtcmVzb2x2ZUA1LjIxLjUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZ3JhY2VmdWwtZnMiOiAiXjQuMi40IiwgInRhcGFibGUiOiAiXjIuMy4zIiB9IH0sICJzaGE1MTItbUxDTmJyUWxpMTFLMXlTVW11TnQ0WlVCM09wR0lEcTRxMnZUQlRmNWNMMmxwc1JqSTlRS3FTRDBuZGpXOEZ5dmNXL0pqNDZnTWU5c3l5SEFzdk1hL0E9PSJdLAoKICAgICJlcy1tb2R1bGUtbGV4ZXIiOiBbImVzLW1vZHVsZS1sZXhlckAyLjEuMCIsICIiLCB7fSwgInNoYTUxMi1uMjd6VFlNall1MWFqNE1qQ1d6U1A3RzlyNzV1dHNhb2M4bTYxd2VLK1c4Sk1CR0dReWJkNDNHc3RDWFozV05tU0Z0R1Q5d2k1OXFRVFc2bWhUUjVMUT09Il0sCgogICAgImVzYnVpbGQiOiBbImVzYnVpbGRAMC4yNS40IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGVzYnVpbGQvYWl4LXBwYzY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9hbmRyb2lkLWFybSI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvYW5kcm9pZC1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvYW5kcm9pZC14NjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2Rhcndpbi1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZGFyd2luLXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZnJlZWJzZC1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZnJlZWJzZC14NjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWFybSI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtYXJtNjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWlhMzIiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWxvb25nNjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LW1pcHM2NGVsIjogIjAuMjUuNCIsICJAZXNidWlsZC9saW51eC1wcGM2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtcmlzY3Y2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtczM5MHgiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbmV0YnNkLWFybTY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9uZXRic2QteDY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9vcGVuYnNkLWFybTY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9vcGVuYnNkLXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvc3Vub3MteDY0IjogIjAuMjUuNCIsICJAZXNidWlsZC93aW4zMi1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvd2luMzItaWEzMiI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvd2luMzIteDY0IjogIjAuMjUuNCIgfSwgImJpbiI6IHsgImVzYnVpbGQiOiAiYmluL2VzYnVpbGQiIH0gfSwgInNoYTUxMi04cGdqTFVjVWpjZ0RnKzJRNE5ZWG5QYm8vdm5jQVk0VW15YUNtMGpaZXZFUnFDSFpJYVd3ZEpIa2Y4WFF0dTRBeFNLQ2R2clViVDBYVXIxSWRaekk4UT09Il0sCgogICAgImVzY2FsYWRlIjogWyJlc2NhbGFkZUAzLjIuMCIsICIiLCB7fSwgInNoYTUxMi1XVWoycWx4YVF0TzRnNlBxNWMyOUdUY1dHRHlkOGl0TDh6VGxpcGdFQ3ozSmVzQWlpT0tvdGQ4SlU2b3RCM1BBQ2dHNnhrSlV5Vmhib01TK2JqZS9qQT09Il0sCgogICAgImVzdHJlZS13YWxrZXIiOiBbImVzdHJlZS13YWxrZXJAMy4wLjMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL2VzdHJlZSI6ICJeMS4wLjAiIH0gfSwgInNoYTUxMi03UlVLZlhnU01Na3p0Nlp1WG1xYXBPdXJMR1BQZmdqNmw5dVJaN2xSR29sdmsweTJ5b2NjMzVMZGN4S0M1UFFaZG4yRE1xaW9BUTJOb1djclRLbW02Zz09Il0sCgogICAgImV4cGVjdC10eXBlIjogWyJleHBlY3QtdHlwZUAxLjMuMCIsICIiLCB7fSwgInNoYTUxMi1rbnZ5ZWF1WWhxak9ZdlE2Nk16blNNczgzd21IckN5Y05FTjZBbysyQWVZRWZ4VUlrdWlWeGRFYTFxbEdFUEsrV2UzbjBUSGlEY2lZU3NDY2dXL0RvQT09Il0sCgogICAgImZkaXIiOiBbImZkaXJANi41LjAiLCAiIiwgeyAicGVlckRlcGVuZGVuY2llcyI6IHsgInBpY29tYXRjaCI6ICJeMyB8fCBeNCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbInBpY29tYXRjaCJdIH0sICJzaGE1MTItdEliWXRaYnVjT3MwQlJHcVBKa3NoSlVZZEwrU0RIN2RWTThnankrRVJwM1dBVWpMRUZKRSswMmthbnlIdHdqV09ud3JLWUJpd0FtTTBwNGtMSkFuWGc9PSJdLAoKICAgICJmc2V2ZW50cyI6IFsiZnNldmVudHNAMi4zLjMiLCAiIiwgeyAib3MiOiAiZGFyd2luIiB9LCAic2hhNTEyLTV4b0RmWCtmTDdmYUFUbmFnbVdQcGJGdHdoL1I3N1dtTU1xcUhHUzY1QzN2dkIwWUhyZ0YrQjFZbVozNDQxdE1qNW42M2swMjEyWE5vSnd6bGhmZlF3PT0iXSwKCiAgICAiZ2V0LWNhbGxlci1maWxlIjogWyJnZXQtY2FsbGVyLWZpbGVAMi4wLjUiLCAiIiwge30sICJzaGE1MTItRHlGUDNCTS8zWUhUUU9DVUwvdzBPWkhSMGxwS2VHcnhvdGNIV2NxTkVkbmx0cUZ3WFZmaEVCUTk0ZUlvMzRBZlFwbzByR2tpNGN5SWlmdFkwNmgyRmc9PSJdLAoKICAgICJncmFjZWZ1bC1mcyI6IFsiZ3JhY2VmdWwtZnNANC4yLjExIiwgIiIsIHt9LCAic2hhNTEyLVJiSjUvam1GY05OQ2NEVjVvOWVUbkJMSi9Ic3pXVjBQNzNiYytGZjRuUy9ySmorWWFTNklHeWlPTDBWb0JZWCtsMVdybDNrNjNoL0tySCtuaEowWHZRPT0iXSwKCiAgICAiaGFzLWZsYWciOiBbImhhcy1mbGFnQDQuMC4wIiwgIiIsIHt9LCAic2hhNTEyLUV5a0pUL1ExS2pUV2N0cHBnSUFnZlNPMHRLVnVaVWpoZ01yMTdrcVR1bU1sNkFmdjNFSVNsZVU3cVpVem9YREZUQUhUREM0Tk9vRy9aeFUzRXZsTVBRPT0iXSwKCiAgICAiaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQiOiBbImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50QDMuMC4wIiwgIiIsIHt9LCAic2hhNTEyLXp5bW01K3Urc0NzU1d5RDlxTmFlalYzREZ2aENLY2xLZGl6WWFKVXVIQTgzUkxqYjduU3VHbmRkQ0hHdjBoaytLWTdCTUFsc1dlSzRVZWc2RVY2WFFnPT0iXSwKCiAgICAiaml0aSI6IFsiaml0aUAyLjcuMCIsICIiLCB7ICJiaW4iOiB7ICJqaXRpIjogImxpYi9qaXRpLWNsaS5tanMiIH0gfSwgInNoYTUxMi1BQy83Sm9mSnZaR3JybmVXTmFFbkplT0xVeCtKbEd0N3ROYTB3WmlSUFQ0TVkxd21mS2p0Mis2TzJwMnV6Mitza2xsOE9aWm1KTU5xZWtlN2tLYk5nUT09Il0sCgogICAgImxpYnBob25lbnVtYmVyLWpzIjogWyJsaWJwaG9uZW51bWJlci1qc0AxLjEyLjQxIiwgIiIsIHt9LCAic2hhNTEyLWxzbU1tR1hCeFhJSy9WTUxFajBrTDZNdFVzMWtCR2oxblRDemk2emdRb0cxREV3cXd0MkRReUh4Y0x5a2NlSXhBbmZFM2h5YTdOdUloNlBwQzZTM2ZBPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzIjogWyJsaWdodG5pbmdjc3NAMS4zMi4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImRldGVjdC1saWJjIjogIl4yLjAuMyIgfSwgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAibGlnaHRuaW5nY3NzLWFuZHJvaWQtYXJtNjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1kYXJ3aW4tYXJtNjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1kYXJ3aW4teDY0IjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtZnJlZWJzZC14NjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1saW51eC1hcm0tZ251ZWFiaWhmIjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251IjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtbXVzbCI6ICIxLjMyLjAiLCAibGlnaHRuaW5nY3NzLWxpbnV4LXg2NC1nbnUiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtbXVzbCI6ICIxLjMyLjAiLCAibGlnaHRuaW5nY3NzLXdpbjMyLWFybTY0LW1zdmMiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy13aW4zMi14NjQtbXN2YyI6ICIxLjMyLjAiIH0gfSwgInNoYTUxMi1OWFlCemluTnJibGZyYVBHeXJiUG9EMTlDMWg5bGZJLzFtemdXWXZYVVRlNDE0R3ovWDFGRDJYQlpTWk03clJUck1BOEpMM090QWFHaWZySUtoUTV5UT09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1hbmRyb2lkLWFybTY0IjogWyJsaWdodG5pbmdjc3MtYW5kcm9pZC1hcm02NEAxLjMyLjAiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItWUs3L0NsVHQ0a0FLMHZvNnczWCtQbm0wRDJjZjJ2UEhiaE9YZG9OdGkxR2EwYWwxUDRUQlpod2pBVHZqTndMRUJDbkt2akpjMmpRZ0hYSDBORXdsQWc9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtZGFyd2luLWFybTY0IjogWyJsaWdodG5pbmdjc3MtZGFyd2luLWFybTY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVJ6ZUc5SnU1YmFnMkJ2MS9sd2xWSnZCRTNxNlR0WHNrZFpMTEN5Zmc1cHQrSEx6OUJxbElDTzdMWk03VkhOVFRuLzVQUmhIRkJTams1bGM0Y21zY1BRPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzLWRhcndpbi14NjQiOiBbImxpZ2h0bmluZ2Nzcy1kYXJ3aW4teDY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1VK1FzQnAybS9zMndxcFVZVC82d25sYWdkWmJ0WmRuZFNtdXQvTkpxbENjTUxUV3A1bXVDcklEK0s1VUo2anFEMkJGc2hlakNZWG5pUERiTmg3M1Y4dz09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1mcmVlYnNkLXg2NCI6IFsibGlnaHRuaW5nY3NzLWZyZWVic2QteDY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSkNUaWdlZEVrc1prM3RIVFR0aG5NZFZmR2Y2MUZreThKaTJFNFlqVVRFUVgxNHhpeS9sVHpYbnUxdndpWmUzYlllMHErU3BzU0gvQ1RlRFhLNldIaWc9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtLWdudWVhYmloZiI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LWFybS1nbnVlYWJpaGZAMS4zMi4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTIteDZybm5wUmEyR0wwelFPa3Q2cnRzM1lEUHpkdUxwV3Z3QUY2RU1oWEZWWlhENHRQckJrRUZxekdvd3pDc0lXc1BqcVNLK3R5TkVPRFVCWGVlVkhTa3c9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251IjogWyJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItMG5uTXlveU9MUkpYZmJNT2lsYVNSY0xIM0p3NXo5SEROR2ZUL2d3Q1BnYURqbngwaTh3N3ZCekZMRlIxZjZDTUxLRjhnVmJlYm1rVU4zZmEva1FKcFE9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtbXVzbCI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LWFybTY0LW11c2xAMS4zMi4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1VcFFrb2VucjRVSkV6Z1ZJWXBJODBsREZ2Um1QVmc2b3Fib05IZm9INENRSWZOQStIT3JaN01vN0taUDAyZEM2TGpnaFBRSmVCc3ZYaEpvZC93bklCZz09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtZ251IjogWyJsaWdodG5pbmdjc3MtbGludXgteDY0LWdudUAxLjMyLjAiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1WN1FyNTJJaFptZEtQVnIrVnR3OG8rV0xzUUpZQ1RkOGxvSWZwRGFNUldHVVpmQk9ZRUpleUpJa3FHSURNWlB3UHgyNHBVTWZ3U3h4SThwaHIvTWJPQT09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtbXVzbCI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LXg2NC1tdXNsQDEuMzIuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLWJZY0xwK1ZiMGF3c2lYZy84MHVDUmV6Q1lITmcxL2wzbXQwZ3pIbldWOVhQMVc1c0thNS9UQ2RHV2FSL3pCTTJQZUYvSGJzUXYvajJVUk5PaVZ1eFdnPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzLXdpbjMyLWFybTY0LW1zdmMiOiBbImxpZ2h0bmluZ2Nzcy13aW4zMi1hcm02NC1tc3ZjQDEuMzIuMCIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItOFNiQzhCUjQwcFM2YmFDTThzYnRZRFN3RVZRZDRKbEZUT2xhRDNnV0dIZlRoVGNBQm5OREJkYTZlVFplcWJvZmFsSUpoRngwcUt6Z0hKbWNQVG5HZHc9PSJdLAoKICAgICJsaWdodG5pbmdjc3Mtd2luMzIteDY0LW1zdmMiOiBbImxpZ2h0bmluZ2Nzcy13aW4zMi14NjQtbXN2Y0AxLjMyLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1BbXE5Qi9Tb1pZZERpMWtGcm9qbm9xUEx4WWhRNFdvNVhpTDhFVkpyVnNCOEFSb0MxUFdXNlZHdFQwV0tDZW1qeThhQytsb3VKbmpTN1UxOHgzYjA2UT09Il0sCgogICAgIm1hZ2ljLXN0cmluZyI6IFsibWFnaWMtc3RyaW5nQDAuMzAuMjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjIjogIl4xLjUuNSIgfSB9LCAic2hhNTEyLXZkMkY0WVV5RVhLR2NMSG9xK1RFeUNqeHVlU2VIbkZ4eXlqTnA4MHlnMFhWNHZVaG5EZXIvbHZ2bHFNL2FyQjViWFFONUsyLzNvaW55Q1J5eDhUMkNRPT0iXSwKCiAgICAibmFub2lkIjogWyJuYW5vaWRAMy4zLjEyIiwgIiIsIHsgImJpbiI6IHsgIm5hbm9pZCI6ICJiaW4vbmFub2lkLmNqcyIgfSB9LCAic2hhNTEyLVpCOVJILzM5cXBxNVZ1NlkrTm1VYUZoUVI2cHArTTJYdDc2WEJuRXdEYUdjVkFxaGx2eHJsM0IyYktTNUQzTkgzUVI3NnYzYVNyS2FGL0tpeTdsRXRRPT0iXSwKCiAgICAibmV4dCI6IFsibmV4dEAxNi4yLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQG5leHQvZW52IjogIjE2LjIuNiIsICJAc3djL2hlbHBlcnMiOiAiMC41LjE1IiwgImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZyI6ICJeMi45LjE5IiwgImNhbml1c2UtbGl0ZSI6ICJeMS4wLjMwMDAxNTc5IiwgInBvc3Rjc3MiOiAiOC40LjMxIiwgInN0eWxlZC1qc3giOiAiNS4xLjYiIH0sICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBuZXh0L3N3Yy1kYXJ3aW4tYXJtNjQiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy1kYXJ3aW4teDY0IjogIjE2LjIuNiIsICJAbmV4dC9zd2MtbGludXgtYXJtNjQtZ251IjogIjE2LjIuNiIsICJAbmV4dC9zd2MtbGludXgtYXJtNjQtbXVzbCI6ICIxNi4yLjYiLCAiQG5leHQvc3djLWxpbnV4LXg2NC1nbnUiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy1saW51eC14NjQtbXVzbCI6ICIxNi4yLjYiLCAiQG5leHQvc3djLXdpbjMyLWFybTY0LW1zdmMiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy13aW4zMi14NjQtbXN2YyI6ICIxNi4yLjYiLCAic2hhcnAiOiAiXjAuMzQuNSIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJAb3BlbnRlbGVtZXRyeS9hcGkiOiAiXjEuMS4wIiwgIkBwbGF5d3JpZ2h0L3Rlc3QiOiAiXjEuNTEuMSIsICJiYWJlbC1wbHVnaW4tcmVhY3QtY29tcGlsZXIiOiAiKiIsICJyZWFjdCI6ICJeMTguMi4wIHx8IDE5LjAuMC1yYy1kZTY4ZDJmNC0yMDI0MTIwNCB8fCBeMTkuMC4wIiwgInJlYWN0LWRvbSI6ICJeMTguMi4wIHx8IDE5LjAuMC1yYy1kZTY4ZDJmNC0yMDI0MTIwNCB8fCBeMTkuMC4wIiwgInNhc3MiOiAiXjEuMy4wIiB9LCAib3B0aW9uYWxQZWVycyI6IFsiQG9wZW50ZWxlbWV0cnkvYXBpIiwgIkBwbGF5d3JpZ2h0L3Rlc3QiLCAiYmFiZWwtcGx1Z2luLXJlYWN0LWNvbXBpbGVyIiwgInNhc3MiXSwgImJpbiI6IHsgIm5leHQiOiAiZGlzdC9iaW4vbmV4dCIgfSB9LCAic2hhNTEyLXFPVmdLSmcxK0F0MTVOcGVVUCtlSmdDSHZUQ2dYc29nd2VxODdSaS9JeDdQa3FRSGc0c2RhWG1TRnFLbGdhSVhFNGtXMGcyNUxFNjhXODdVQU5sSHR3PT0iXSwKCiAgICAib2J1ZyI6IFsib2J1Z0AyLjEuMSIsICIiLCB7fSwgInNoYTUxMi11VHFGOU11UHJhQVErSXNuUGYzNjZSRzRjUDlSdFVpN01MTzFOM0tFYyt3YjBhNnlLcGVMMGxtazJJQjFqWTVLSFBBbFRjNlQvSlJkQy9ZcXhITndrUT09Il0sCgogICAgInBhdGhlIjogWyJwYXRoZUAyLjAuMyIsICIiLCB7fSwgInNoYTUxMi1XVWpHY0FxUDFnUWFjb1FlK09CSnNGQTdMZDREeVh1VUlqWjVjYzc1Y0xIdko3ZHROc1R1Z3BoeElBRHdzcFMrQXJhQVVlUENLclNWdFBMRmovRjg4dz09Il0sCgogICAgInBpY29jb2xvcnMiOiBbInBpY29jb2xvcnNAMS4xLjEiLCAiIiwge30sICJzaGE1MTIteGNlSDJzbmh0YjVNOWxpcURzbUV3NTZsZTM3Nm1UWmtFWC9qRWIvUnhORnllZ051bDdlTnNsQ1hQOUZEai9MY3UwWDhLRXlNY2VQMm50cGFIckRFVkE9PSJdLAoKICAgICJwaWNvbWF0Y2giOiBbInBpY29tYXRjaEA0LjAuNCIsICIiLCB7fSwgInNoYTUxMi1RUDg4QkFLdk1hbS8zTnhINnZqMm8yMVI2TWp4WlVBZDZubHdBUy9wbkd2TjlJVkxvY0xIeEdZSXpGaGc2ZlVRKzV0aDZQNGR2NGVXOWpYM0RTSWo3QT09Il0sCgogICAgInBvc3Rjc3MiOiBbInBvc3Rjc3NAOC41LjE1IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIm5hbm9pZCI6ICJeMy4zLjEyIiwgInBpY29jb2xvcnMiOiAiXjEuMS4xIiwgInNvdXJjZS1tYXAtanMiOiAiXjEuMi4xIiB9IH0sICJzaGE1MTItRmZSOHNqZDRlbTJUNmZiM0kyTXdBSlU3SFdWTXI5emJhK2VubVFlZVdGZkNibStVT0MvMFg0RFM4WHRwVVRNd1dNR2JqS1lQN3hqZk5la3p5R21CM0E9PSJdLAoKICAgICJyZWFjdCI6IFsicmVhY3RAMTkuMi42IiwgIiIsIHt9LCAic2hhNTEyLXNmV0dHZmF2aTB4cjhQZzBzVnN5SE1BT3ppVllLZ1BMTnJTN2lnK2l2TU5iM3diQ0J3M0t4dGZsc0dCQXdEM2dZUWxFL0FFWnNUTGdUb1JyU0NqYjBRPT0iXSwKCiAgICAicmVhY3QtZGF5LXBpY2tlciI6IFsicmVhY3QtZGF5LXBpY2tlckA5LjE0LjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGRhdGUtZm5zL3R6IjogIl4xLjQuMSIsICJAdGFiYnlfYWkvaGlqcmktY29udmVydGVyIjogIjEuMC41IiwgImRhdGUtZm5zIjogIl40LjEuMCIsICJkYXRlLWZucy1qYWxhbGkiOiAiNC4xLjAtMCIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJyZWFjdCI6ICI+PTE2LjguMCIgfSB9LCAic2hhNTEyLXRCYW9EV2pQd2UwTTVwR3J1bTRIMFNSNkx5aytCTzlvSG5wOUpiS3BHS1cybWxyYU5QZ1A5Qk1mc2c1cFdwd3Jzc0FSbWVxazdZQmwyb1h1dFpUYUhBPT0iXSwKCiAgICAicmVhY3QtZG9tIjogWyJyZWFjdC1kb21AMTkuMi42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInNjaGVkdWxlciI6ICJeMC4yNy4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgInJlYWN0IjogIl4xOS4yLjYiIH0gfSwgInNoYTUxMi0wcHJNSStodkJiUGpzV254REx4bENHeU04UE42VXVXakVVQ1ltWmhPNjd4SVY5WGFzYS9yL3ZEbnErWHlxNExvMjdnOFFTYk81WXpBUnUwRDFTcHMzZz09Il0sCgogICAgInJlcXVpcmUtZGlyZWN0b3J5IjogWyJyZXF1aXJlLWRpcmVjdG9yeUAyLjEuMSIsICIiLCB7fSwgInNoYTUxMi1mR3hFSTcrd3NHOXhydmRqc3JsbUwyMk9NVFRpSFJ3QU1yb2lFZU1ncThnem9MQy9QUXI3UnNSRFNUTFVnL2JaQVp0RitUVklrSGM2LzRSSUtydWkrUT09Il0sCgogICAgInJlc2VsZWN0IjogWyJyZXNlbGVjdEA1LjIuMCIsICIiLCB7fSwgInNoYTUxMi1BZ1ozVU9abTNZbmRmcko0T1lqZ3JUN2JtQ20vMWlxa2p2RWZIL29ZanpoNlBEMnF3NFF1VDNqam5YSXJwZHQ0TVRwTVhjbE1UM2xYYm1SWStYUmFrdz09Il0sCgogICAgInJvbGxkb3duIjogWyJyb2xsZG93bkAxLjAuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAb3hjLXByb2plY3QvdHlwZXMiOiAiPTAuMTMwLjAiLCAiQHJvbGxkb3duL3BsdWdpbnV0aWxzIjogIl4xLjAuMCIgfSwgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQHJvbGxkb3duL2JpbmRpbmctYW5kcm9pZC1hcm02NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1kYXJ3aW4tYXJtNjQiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1mcmVlYnNkLXg2NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmIjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LWFybTY0LWdudSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsIjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXBwYzY0LWdudSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1zMzkweC1nbnUiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctbGludXgteDY0LWdudSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC14NjQtbXVzbCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1vcGVuaGFybW9ueS1hcm02NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy13YXNtMzItd2FzaSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjIjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLXdpbjMyLXg2NC1tc3ZjIjogIjEuMC4xIiB9LCAiYmluIjogeyAicm9sbGRvd24iOiAiYmluL2NsaS5tanMiIH0gfSwgInNoYTUxMi1YMEtRSGxqTm5Fa1dOcXFpejl6SnJHdW5oMUIwSGdPeExYdm5GcENPY2FkemN5NXFvaFozdHFNRVVnMDB2bmNvUm92WHVLM1pxQ1Q5S25uS3pvSW5GUT09Il0sCgogICAgInJ4anMiOiBbInJ4anNANy44LjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuMS4wIiB9IH0sICJzaGE1MTItZGhLZjkwM1UvUFFaWTZib05OdEFHZFdiRzg1V0FialQvMXhZb1pJQzdGQVkweVdhcE9CUVZzVnJEbDU4Vzg2Ly9lMVZwTU5CdFJWNE1hWGZkTXlTRkE9PSJdLAoKICAgICJzY2hlZHVsZXIiOiBbInNjaGVkdWxlckAwLjI3LjAiLCAiIiwge30sICJzaGE1MTItZU52K1dyVmJLdTFmM3ZiWUpUL3h0aUY1c3lBNUhQSU10ZjlJZ1kvbktnMHNXcXpBVUV2cVkveG03T2NaYy9xYWZMeC9pTzlGZ09tZVNBcDR2NXRpL1E9PSJdLAoKICAgICJzZW12ZXIiOiBbInNlbXZlckA3LjguMCIsICIiLCB7ICJiaW4iOiB7ICJzZW12ZXIiOiAiYmluL3NlbXZlci5qcyIgfSB9LCAic2hhNTEyLUFjTTdkVi81dWw0RWVrb1EyOUFnbTV2cmk4Sk5xUnlqMzlvMHFwWDZ2REYyR1pydHV0Wmw1UndnRDFYblpqaVRBZm5jc0poTUk0OFFRSDNzTjg3WU5BPT0iXSwKCiAgICAic2hhcnAiOiBbInNoYXJwQDAuMzQuNSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAaW1nL2NvbG91ciI6ICJeMS4wLjAiLCAiZGV0ZWN0LWxpYmMiOiAiXjIuMS4yIiwgInNlbXZlciI6ICJeNy43LjMiIH0sICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtZGFyd2luLWFybTY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLWRhcndpbi14NjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWRhcndpbi14NjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybSI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgtYXJtNjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1yaXNjdjY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1zMzkweCI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgteDY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4bXVzbC14NjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saW51eC1hcm0iOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgtYXJtNjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgtcHBjNjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgtcmlzY3Y2NCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC1saW51eC1zMzkweCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC1saW51eC14NjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXhtdXNsLWFybTY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLWxpbnV4bXVzbC14NjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtd2FzbTMyIjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLXdpbjMyLWFybTY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLXdpbjMyLWlhMzIiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtd2luMzIteDY0IjogIjAuMzQuNSIgfSB9LCAic2hhNTEyLU91OUk1RnQ5V05jQ2JYclU5Y01nUEJjQ0s4TGl3THFjYnl3VzN0NG9EVjM3bjFwenB1TkxzWWlBVjhlT0RuamJ0UWxTRHdaMmNVRWVRejRFNTRIbHRnPT0iXSwKCiAgICAic2hlbGwtcXVvdGUiOiBbInNoZWxsLXF1b3RlQDEuOC4zIiwgIiIsIHt9LCAic2hhNTEyLU9ibW5JRjRoWE5nMUJxaG5IbWdiREVURjhkTFBDZ2daV0Jqa1FmaFpwYnN6Wm5ZdXI1RFVsalRjQ0hpaTVMQzNKNUUweWVPLzFMSU15SCtVdkhRZ3l3PT0iXSwKCiAgICAic2lnaW5mbyI6IFsic2lnaW5mb0AyLjAuMCIsICIiLCB7fSwgInNoYTUxMi15YngwV08xLzhiU0JMRVdYWnZFZDdnTVczU24zSkZsVzNUdlgxblJFYkRMUk5RTmFlTk44V0swbWVCd1BkQWFPSTdUdFJSUkpuL0VzMXpocnJDSHU3Zz09Il0sCgogICAgInNvdXJjZS1tYXAiOiBbInNvdXJjZS1tYXBAMC42LjEiLCAiIiwge30sICJzaGE1MTItVWpnYXB1bVdsYk1oa0JnelQ3WWtjNVlYVVQ0NkYwaUt1OFNHWHEwYmN3UDVkei9oMFBsajZlbkpxanoxWmJxMmw1V2FxWW5yVmJ3V09XTXlGM0Y0N2c9PSJdLAoKICAgICJzb3VyY2UtbWFwLWpzIjogWyJzb3VyY2UtbWFwLWpzQDEuMi4xIiwgIiIsIHt9LCAic2hhNTEyLVVYV01LaExPd1ZLYjcyOElVdFFQWHhmWVUrdXNkeWJ0VXJLLzh1R0U4Q1FNdnJoT3B3dnpEQndqMFFoU0w3TVFjN3ZJc0lTQkc4VlE4K0lEUXhwZlFBPT0iXSwKCiAgICAic291cmNlLW1hcC1zdXBwb3J0IjogWyJzb3VyY2UtbWFwLXN1cHBvcnRAMC41LjIxIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImJ1ZmZlci1mcm9tIjogIl4xLjAuMCIsICJzb3VyY2UtbWFwIjogIl4wLjYuMCIgfSB9LCAic2hhNTEyLXVCSFUzTDNjenNJeVlYS1g4OGZkckdvdnhkU0NvVEdEUlo2U1lYdFNSeExaVXpIZzVQLzY2SHQ2dW9VbEh1OUVab2QraW5YaEtvM3FRZ3dYVVQveTF3PT0iXSwKCiAgICAic3RhY2tiYWNrIjogWyJzdGFja2JhY2tAMC4wLjIiLCAiIiwge30sICJzaGE1MTItMVhNSkU1ZlFvMWpHSDZZLzdlYm53UE9CRWtJRW5UNFFGMzJkNVIxK1ZYZFh2ZU0wSUJNSnQ4emZheFgxUDNRaFZ3clllKzU3Nitqa0FOdFNTMm1CYnc9PSJdLAoKICAgICJzdGQtZW52IjogWyJzdGQtZW52QDQuMS4wIiwgIiIsIHt9LCAic2hhNTEyLVJxN3liY1gyUnVDNTVyOW9hUFZFVzcveHUzdGo4dTRHZUJZSEJXQ3ljaEZ0ek1Jcjg2QTdlM1BQRUJQVDM3c0hTdEtYMytUaVgvRnIvQUNtSkxWbExRPT0iXSwKCiAgICAic3RyaW5nLXdpZHRoIjogWyJzdHJpbmctd2lkdGhANC4yLjMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZW1vamktcmVnZXgiOiAiXjguMC4wIiwgImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50IjogIl4zLjAuMCIsICJzdHJpcC1hbnNpIjogIl42LjAuMSIgfSB9LCAic2hhNTEyLXdLeVFSUXBqSjBzSXA2MkVyU1pkR3NqTUpXc2FwNW9STmloSGh1Nkc3SlZPLzlqSUI2VXlldkwrdFh1T3Fybmc4ai9jeEtUV3lXVXd2U1RyaWlaei9nPT0iXSwKCiAgICAic3RyaXAtYW5zaSI6IFsic3RyaXAtYW5zaUA2LjAuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJhbnNpLXJlZ2V4IjogIl41LjAuMSIgfSB9LCAic2hhNTEyLVkzOFZQU0hjcWtGckNwRm5ROXZ1U1htcXV1djVvWE9LcEdlVDZhR3JyM28zR2M5QWxWYTZKQmZVU09DbmJ4R0daRisvMG9vSTdLclB1VVN6dFVkVTVBPT0iXSwKCiAgICAic3R5bGVkLWpzeCI6IFsic3R5bGVkLWpzeEA1LjEuNiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjbGllbnQtb25seSI6ICIwLjAuMSIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJyZWFjdCI6ICI+PSAxNi44LjAgfHwgMTcueC54IHx8IF4xOC4wLjAtMCB8fCBeMTkuMC4wLTAiIH0gfSwgInNoYTUxMi1xU1Z5RFRlTW90ZHZRWW9IV0xOR3dSRkpIQytpK1p2ZEJSWW9zT0ZnQytXZzF2eDRmck4yL1JHL05BN1NZcXF2S05MZjM5UDJMU1JBMnB1Nm4wWFlaQT09Il0sCgogICAgInN1cHBvcnRzLWNvbG9yIjogWyJzdXBwb3J0cy1jb2xvckA4LjEuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJoYXMtZmxhZyI6ICJeNC4wLjAiIH0gfSwgInNoYTUxMi1NcFVFTjJPb2R0VXp4dktRbDcyY1VGN1JRNUVpSHNHdlNzVkcwaWE5YzVSYldHTDJDSTRDN0VwUFM4VVRCSXBsbmx6WmlOdVY1NncrRnVOeHkzdHkyUT09Il0sCgogICAgInRhaWx3aW5kLW1lcmdlIjogWyJ0YWlsd2luZC1tZXJnZUAzLjYuMCIsICIiLCB7fSwgInNoYTUxMi11eEw3cUFWUXJpcVJRUEF5SzNwajY2VnFza1dxb1ozN1BXOTRqd09Ud05mcS96OW95dTFWK2VxclpxdFIyK2ZDaVhkWU9aZS9Nb2R0OEd0dnFOenUrdz09Il0sCgogICAgInRhaWx3aW5kY3NzIjogWyJ0YWlsd2luZGNzc0A0LjMuMCIsICIiLCB7fSwgInNoYTUxMi15Nm54TUdCMW5NVzlSNms5NmU1Z2RJRnpjZkwvZ1RKUk5hcUdlczFZdmtMblBWWHpXZ2JxRkYyeUxDMFQ4Rzc3NG4yNGN4M1BlOFhyS29uaUNPQUgrUT09Il0sCgogICAgInRhcGFibGUiOiBbInRhcGFibGVAMi4zLjMiLCAiIiwge30sICJzaGE1MTItdXhjL3pwcUZnNng3Qzh2T0U3bGg2TGJkYThlRUw5em1WbS9QTGVUUEJSaGgxeENnZFdhUStKMUNVaWVHcElmbTJIZHRzVXBSditIc2hpYXNCTWNjNkE9PSJdLAoKICAgICJ0ZXJzZXIiOiBbInRlcnNlckA1LjE2LjkiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlLW1hcCI6ICJeMC4zLjIiLCAiYWNvcm4iOiAiXjguNS4wIiwgImNvbW1hbmRlciI6ICJeMi4yMC4wIiwgInNvdXJjZS1tYXAtc3VwcG9ydCI6ICJ+MC41LjIwIiB9LCAiYmluIjogeyAidGVyc2VyIjogImJpbi90ZXJzZXIiIH0gfSwgInNoYTUxMi1IUGEvRmRUQjlYR0kySDEva2VMRlpIeGw2V052QUk0WWFsSEd0RFFUbE1uSmNvcVNhYjFVd0w0bDFoR0VoczYvR21MSEJaSWcvWWdCKytqY2J6b09FZz09Il0sCgogICAgInRpbnliZW5jaCI6IFsidGlueWJlbmNoQDIuOS4wIiwgIiIsIHt9LCAic2hhNTEyLTArRFV2cVdNVmFsTG1oYTZscjRrRDhpQU1LMUh6VjAvYUtuQ3RXYjl2OTY0MVRuUC9NRmI3UGMyYnhveFFqVFhBRXJyeVhWZ1VPZnYyWXFObGxxR2VnPT0iXSwKCiAgICAidGlueWV4ZWMiOiBbInRpbnlleGVjQDEuMS4yIiwgIiIsIHt9LCAic2hhNTEyLWRBcVNxRS9SYWJwQktJOCtoMjZHZkxxNlZiM0pWWHMzMFhZUWpkTWphai9jMnRTOElZWU1iSXpQNTk5S3RSajdjNTcvd1lBcGIzUWpnUmdYbXJDdWtBPT0iXSwKCiAgICAidGlueWdsb2JieSI6IFsidGlueWdsb2JieUAwLjIuMTYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZmRpciI6ICJeNi41LjAiLCAicGljb21hdGNoIjogIl40LjAuNCIgfSB9LCAic2hhNTEyLXBuOTlWaG9BQ1lSOG5GSGh4cWl4K3V2c2JYaW5lQWFzV201b2pYb044eEV3SzVLZDMvVHJoTm4xd0J5dUQ1MlV4V1JMeThwdStrUk1uaUVpNkVxOVpnPT0iXSwKCiAgICAidGlueXJhaW5ib3ciOiBbInRpbnlyYWluYm93QDMuMS4wIiwgIiIsIHt9LCAic2hhNTEyLUJmK0lMbUJncmV0VXJkSnh6WE0wU2dYTFozWGZpYVV1T2ovSUtRSHVUWGlwKzA1WG4rdXlFWWRWZzBrWURpcFRCY0xyQ1Z5VXpBUHo3UW1BcmIwbW13PT0iXSwKCiAgICAidHJlZS1raWxsIjogWyJ0cmVlLWtpbGxAMS4yLjIiLCAiIiwgeyAiYmluIjogeyAidHJlZS1raWxsIjogImNsaS5qcyIgfSB9LCAic2hhNTEyLUwwT3JwaThxR3BSRy8vTmQrSDkwdkZCKzNpSG51ZTF6U1NHbU5PT0NoMUdMSjdyVUtWd1YySHZpanBoR1FTMlVtaFVaZXdTOVZndnhZSWRncitmRzFBPT0iXSwKCiAgICAidHNsaWIiOiBbInRzbGliQDIuOC4xIiwgIiIsIHt9LCAic2hhNTEyLW9KRnU5NEhRYitLVmR1U1VRTDd3bnBtcW5mbUxzT0EvbkFoNmI2RUgwd0NFb0swL21QZVhVNmMzd0tEVjgzTWtPdUhQUkh0U1hLS1U5OUlCYXpTLzJ3PT0iXSwKCiAgICAidHlwZXNjcmlwdCI6IFsidHlwZXNjcmlwdEA1LjkuMyIsICIiLCB7ICJiaW4iOiB7ICJ0c2MiOiAiYmluL3RzYyIsICJ0c3NlcnZlciI6ICJiaW4vdHNzZXJ2ZXIiIH0gfSwgInNoYTUxMi1qbDF2WnpQRGluTHI5ZVV0M0ovdDdWNkZnTkV3OVFqdkJQZHlzejlLZlFERDQxZlFyQzJZNHZLUWRpYVVwRlQ0YlhsYjFSSGhMcHA4d3RtNk01VGdTdz09Il0sCgogICAgInVuZGljaS10eXBlcyI6IFsidW5kaWNpLXR5cGVzQDYuMjEuMCIsICIiLCB7fSwgInNoYTUxMi1pd0RacWcwUUFHcmc5UmF2NUg0bjBNNjRjM21rUjU5Y0o2d1FwKzdDNG5JMGdzbUV4YWVkYVlMTk80NGVUNEF0QkJ3amJUaUdQTWx0Mk1kMFQ5SDlKUT09Il0sCgogICAgInVzZS1zeW5jLWV4dGVybmFsLXN0b3JlIjogWyJ1c2Utc3luYy1leHRlcm5hbC1zdG9yZUAxLjYuMCIsICIiLCB7ICJwZWVyRGVwZW5kZW5jaWVzIjogeyAicmVhY3QiOiAiXjE2LjguMCB8fCBeMTcuMC4wIHx8IF4xOC4wLjAgfHwgXjE5LjAuMCIgfSB9LCAic2hhNTEyLVBwNkdTd0dQL05yUElyeFZGQUlrT1FleXc4bEZlbk9IaWpRV2tVVHJEdnJGNEFMcXlsUDJDL0tDa2VTOWRwVU0zS3ZZUlFobmE1dnQ3SUw5NStaUTl3PT0iXSwKCiAgICAidml0ZSI6IFsidml0ZUA4LjAuMTMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAibGlnaHRuaW5nY3NzIjogIl4xLjMyLjAiLCAicGljb21hdGNoIjogIl40LjAuNCIsICJwb3N0Y3NzIjogIl44LjUuMTQiLCAicm9sbGRvd24iOiAiMS4wLjEiLCAidGlueWdsb2JieSI6ICJeMC4yLjE2IiB9LCAib3B0aW9uYWxEZXBlbmRlbmNpZXMiOiB7ICJmc2V2ZW50cyI6ICJ+Mi4zLjMiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL25vZGUiOiAiXjIwLjE5LjAgfHwgPj0yMi4xMi4wIiwgIkB2aXRlanMvZGV2dG9vbHMiOiAiXjAuMS4xOCIsICJlc2J1aWxkIjogIl4wLjI3LjAgfHwgXjAuMjguMCIsICJqaXRpIjogIj49MS4yMS4wIiwgImxlc3MiOiAiXjQuMC4wIiwgInNhc3MiOiAiXjEuNzAuMCIsICJzYXNzLWVtYmVkZGVkIjogIl4xLjcwLjAiLCAic3R5bHVzIjogIj49MC41NC44IiwgInN1Z2Fyc3MiOiAiXjUuMC4wIiwgInRlcnNlciI6ICJeNS4xNi4wIiwgInRzeCI6ICJeNC44LjEiLCAieWFtbCI6ICJeMi40LjIiIH0sICJvcHRpb25hbFBlZXJzIjogWyJAdHlwZXMvbm9kZSIsICJAdml0ZWpzL2RldnRvb2xzIiwgImVzYnVpbGQiLCAiaml0aSIsICJsZXNzIiwgInNhc3MiLCAic2Fzcy1lbWJlZGRlZCIsICJzdHlsdXMiLCAic3VnYXJzcyIsICJ0ZXJzZXIiLCAidHN4IiwgInlhbWwiXSwgImJpbiI6IHsgInZpdGUiOiAiYmluL3ZpdGUuanMiIH0gfSwgInNoYTUxMi1NRnRqQllnem1TeG1nQTRSQWZqSXlYV3BHZTFvQUxuamdVVHp6VjdRTHgvVEt4Q3pqdE1INkZkOS9lVksrNUZnMXFOb3o1VkF3c21Ncy9Ob2ZybUp2dz09Il0sCgogICAgInZpdGVzdCI6IFsidml0ZXN0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvZXhwZWN0IjogIjQuMS42IiwgIkB2aXRlc3QvbW9ja2VyIjogIjQuMS42IiwgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6ICI0LjEuNiIsICJAdml0ZXN0L3J1bm5lciI6ICI0LjEuNiIsICJAdml0ZXN0L3NuYXBzaG90IjogIjQuMS42IiwgIkB2aXRlc3Qvc3B5IjogIjQuMS42IiwgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAiZXMtbW9kdWxlLWxleGVyIjogIl4yLjAuMCIsICJleHBlY3QtdHlwZSI6ICJeMS4zLjAiLCAibWFnaWMtc3RyaW5nIjogIl4wLjMwLjIxIiwgIm9idWciOiAiXjIuMS4xIiwgInBhdGhlIjogIl4yLjAuMyIsICJwaWNvbWF0Y2giOiAiXjQuMC4zIiwgInN0ZC1lbnYiOiAiXjQuMC4wLXJjLjEiLCAidGlueWJlbmNoIjogIl4yLjkuMCIsICJ0aW55ZXhlYyI6ICJeMS4wLjIiLCAidGlueWdsb2JieSI6ICJeMC4yLjE1IiwgInRpbnlyYWluYm93IjogIl4zLjEuMCIsICJ2aXRlIjogIl42LjAuMCB8fCBeNy4wLjAgfHwgXjguMC4wIiwgIndoeS1pcy1ub2RlLXJ1bm5pbmciOiAiXjIuMy4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBlZGdlLXJ1bnRpbWUvdm0iOiAiKiIsICJAb3BlbnRlbGVtZXRyeS9hcGkiOiAiXjEuOS4wIiwgIkB0eXBlcy9ub2RlIjogIl4yMC4wLjAgfHwgXjIyLjAuMCB8fCA+PTI0LjAuMCIsICJAdml0ZXN0L2Jyb3dzZXItcGxheXdyaWdodCI6ICI0LjEuNiIsICJAdml0ZXN0L2Jyb3dzZXItcHJldmlldyI6ICI0LjEuNiIsICJAdml0ZXN0L2Jyb3dzZXItd2ViZHJpdmVyaW8iOiAiNC4xLjYiLCAiQHZpdGVzdC9jb3ZlcmFnZS1pc3RhbmJ1bCI6ICI0LjEuNiIsICJAdml0ZXN0L2NvdmVyYWdlLXY4IjogIjQuMS42IiwgIkB2aXRlc3QvdWkiOiAiNC4xLjYiLCAiaGFwcHktZG9tIjogIioiLCAianNkb20iOiAiKiIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkBlZGdlLXJ1bnRpbWUvdm0iLCAiQG9wZW50ZWxlbWV0cnkvYXBpIiwgIkB0eXBlcy9ub2RlIiwgIkB2aXRlc3QvYnJvd3Nlci1wbGF5d3JpZ2h0IiwgIkB2aXRlc3QvYnJvd3Nlci1wcmV2aWV3IiwgIkB2aXRlc3QvYnJvd3Nlci13ZWJkcml2ZXJpbyIsICJAdml0ZXN0L2NvdmVyYWdlLWlzdGFuYnVsIiwgIkB2aXRlc3QvY292ZXJhZ2UtdjgiLCAiQHZpdGVzdC91aSIsICJoYXBweS1kb20iLCAianNkb20iXSwgImJpbiI6IHsgInZpdGVzdCI6ICJ2aXRlc3QubWpzIiB9IH0sICJzaGE1MTItNmx2amJTM3A5YjRDcmRDbWd1emJoMi80dW9YaEdFMnE3MVI0T1g1c3FGOVIxYm85WGQ2ZkdyTUFmdnA1d25DemxCbkZWZENPcDZvbnVUUVZibzhpVVE9PSJdLAoKICAgICJ3aHktaXMtbm9kZS1ydW5uaW5nIjogWyJ3aHktaXMtbm9kZS1ydW5uaW5nQDIuMy4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInNpZ2luZm8iOiAiXjIuMC4wIiwgInN0YWNrYmFjayI6ICIwLjAuMiIgfSwgImJpbiI6IHsgIndoeS1pcy1ub2RlLXJ1bm5pbmciOiAiY2xpLmpzIiB9IH0sICJzaGE1MTItaFVybWFXQmRWRGN4dllxbnloMDl6dW5LelJPV2piWlRpTnk4ZEJFamtTN2VoRURRaWJYSjdYdmxtdGJ3dVRjbFVpSXlOK0N5WFFENFZta284Zk5tOHc9PSJdLAoKICAgICJ3cmFwLWFuc2kiOiBbIndyYXAtYW5zaUA3LjAuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJhbnNpLXN0eWxlcyI6ICJeNC4wLjAiLCAic3RyaW5nLXdpZHRoIjogIl40LjEuMCIsICJzdHJpcC1hbnNpIjogIl42LjAuMCIgfSB9LCAic2hhNTEyLVlWR0lqMmthbUxTVHh3Nk5zWmpvQnhmU3dzbjB5Y2Rlc21jNHArUTIxYzV6UHVaMXBsK05meFZkeFB0ZEh2bU5WT1E2WFNZRzRBVXR5dC9GaTdEMTZRPT0iXSwKCiAgICAieTE4biI6IFsieTE4bkA1LjAuOCIsICIiLCB7fSwgInNoYTUxMi0wcGZGemVnZURXSkhKSUFtVExSUDJEd0hqZEY1czdqbzl0dXp0ZFF4QWhJTkNkdlMrM25HSU5xUGQwMEFwaHFKUi8wTGhBTlVTNi8rN1NDYjk4WU9mQT09Il0sCgogICAgInlhbWwiOiBbInlhbWxAMi45LjAiLCAiIiwgeyAiYmluIjogeyAieWFtbCI6ICJiaW4ubWpzIiB9IH0sICJzaGE1MTItMkF2aE5YM21iOHpkNlp5N0lOVHRTcGwxRjE1SFc2V25xajBzcldsa0tMY3BZbC9nTUlNSml5dUdxMktlSTJZRnhVUGpkbEIrM0xjMTBzZU1MdEw0Y0E9PSJdLAoKICAgICJ5YXJncyI6IFsieWFyZ3NAMTcuNy4yIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImNsaXVpIjogIl44LjAuMSIsICJlc2NhbGFkZSI6ICJeMy4xLjEiLCAiZ2V0LWNhbGxlci1maWxlIjogIl4yLjAuNSIsICJyZXF1aXJlLWRpcmVjdG9yeSI6ICJeMi4xLjEiLCAic3RyaW5nLXdpZHRoIjogIl40LjIuMyIsICJ5MThuIjogIl41LjAuNSIsICJ5YXJncy1wYXJzZXIiOiAiXjIxLjEuMSIgfSB9LCAic2hhNTEyLTdkU3p6UlErK0NLbk5JL2tyS25ZUlY3SktLUFVYTUVoNjFzb2FIS2c5bXJXRWh6RldoRm54UHhHbCs2OWNEMU91NjNDMTNOVVBDbm1JY3J2cUN1TTZ3PT0iXSwKCiAgICAieWFyZ3MtcGFyc2VyIjogWyJ5YXJncy1wYXJzZXJAMjEuMS4xIiwgIiIsIHt9LCAic2hhNTEyLXRWcHNKVzdEZGplY0FpRnBiSUIxZTNxeElRc0U2Tm9QYzUvZVRkcmJiSUM0aDBMVnNXaG5vYTNnK20ySGNsQkl1akh6c3haNFZKVkErR1V1YzIvTEJ3PT0iXSwKCiAgICAiem9kIjogWyJ6b2RANC40LjMiLCAiIiwge30sICJzaGE1MTIteXRFTkZqSUpGbDJVd1lnbGRlMmpjaFcySHdtNEdKRkxEaVNYV2RUckpRQklOOUZjeXA3bjREaHhKRWlXTkFKTVYxL0JxV2ZXL2trZzcxVURjSEp5VFE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQGVtbmFwaS9jb3JlIjogWyJAZW1uYXBpL2NvcmVAMS4xMC4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvd2FzaS10aHJlYWRzIjogIjEuMi4xIiwgInRzbGliIjogIl4yLjQuMCIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTIteXE2T2tKNHA4MkNBZlBsMHU5bVFlYlFIS1BKa1k3V3JJdWsyMDVjVFluWWUrazJaOFlCaDExRnJiUkcvSDZpaGlycWNhY09nbDJCSU84b3lNUUxlWHc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQGVtbmFwaS9ydW50aW1lIjogWyJAZW1uYXBpL3J1bnRpbWVAMS4xMC4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRzbGliIjogIl4yLjQuMCIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItZXd2WWxrODZ4VW9HSTB6UVJOcS9tQysxNlIxUWVEbEtReTIxS2kzb1NZWE5nTGI0NUdWMVA2QTBNKy9zNm55Q3VORHFlNVZwYVk4NEJ6WEd3VmJ3RkE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQGVtbmFwaS93YXNpLXRocmVhZHMiOiBbIkBlbW5hcGkvd2FzaS10aHJlYWRzQDEuMi4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRzbGliIjogIl4yLjQuMCIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItdVRJSTdPWUYrL01lcy9NcmNJT1lwNXlPdFNNTEJXU0lvTFBwY2d3aXBvaUtibGk2azMyMnRjb0ZzeG9JSXhQRHFXMDFTUUdBZ2tvNEV6WmkyQk52Mnc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQG5hcGktcnMvd2FzbS1ydW50aW1lIjogWyJAbmFwaS1ycy93YXNtLXJ1bnRpbWVAMS4xLjQiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHR5YnlzL3dhc20tdXRpbCI6ICJeMC4xMC4xIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvY29yZSI6ICJeMS43LjEiLCAiQGVtbmFwaS9ydW50aW1lIjogIl4xLjcuMSIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItM05RTk5nQTFZU2xKYi9rTUgxaWxkQVNQOUhXNy83a1luUkkyc3pXSmFvZmFTMWhXbWJHSTRIK2QzKzIyYUd6WFhOOUlKK24rR2lGVmNHaXBKUDE4b3c9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQHR5YnlzL3dhc20tdXRpbCI6IFsiQHR5YnlzL3dhc20tdXRpbEAwLjEwLjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9LCAiYnVuZGxlZCI6IHRydWUgfSwgInNoYTUxMi1Sb0J2SjJYMHd1S2xXRklqcndmZkd3MUlxWkhLUXF6SWNoS2FhZFpaZm5OcHNBWXAybU0waDM2SnRQQ2pOREFIR2dZZXovMTV1TUJwZkd3Y2hoaU1nZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS13YXNtMzItd2FzaS90c2xpYiI6IFsidHNsaWJAMi44LjEiLCAiIiwgeyAiYnVuZGxlZCI6IHRydWUgfSwgInNoYTUxMi1vSkZ1OTRIUWIrS1ZkdVNVUUw3d25wbXFuZm1Mc09BL25BaDZiNkVIMHdDRW9LMC9tUGVYVTZjM3dLRFY4M01rT3VIUFJIdFNYS0tVOTlJQmF6Uy8ydz09Il0sCgogICAgImNoYWxrL3N1cHBvcnRzLWNvbG9yIjogWyJzdXBwb3J0cy1jb2xvckA3LjIuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJoYXMtZmxhZyI6ICJeNC4wLjAiIH0gfSwgInNoYTUxMi1xcENBdlJsOXN0dU9IdmVLc243SG5jSlJ2djUwMXFJYWNLelFsTy8rTHd4YzkrMHEyd0x5djREZnZ0ODAvRFBuMnBxT0JzSmREaW9nWEdSOStPdndSdz09Il0sCgogICAgIm5leHQvcG9zdGNzcyI6IFsicG9zdGNzc0A4LjQuMzEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAibmFub2lkIjogIl4zLjMuNiIsICJwaWNvY29sb3JzIjogIl4xLjAuMCIsICJzb3VyY2UtbWFwLWpzIjogIl4xLjAuMiIgfSB9LCAic2hhNTEyLVBTMDhJYm9pYTltdHMvMnlnVjNlTHBZNWdoblVjZkxWL0VYVE9XMUUycVl4SktHR0JVdE5qTjc2RllIbk1zMzZSbUFSbjQxYkMwQVptbityUjBPVnBRPT0iXSwKICB9Cn0K" }, { "path": "metadata.json", "kind": "text", "content": '{\n "id": "retail",\n "name": "Retail",\n "tagline": "Variant-aware retail storefront with full product detail pages and instalment support.",\n "industry": "retail",\n "tags": ["retail", "electronics", "variants"],\n "stability": "stable",\n "schemaType": "Store",\n "mock": {\n "seedName": "retail",\n "seedBusinessId": "bus_currents_electronics"\n }\n}\n' }, { "path": "next.config.ts", "kind": "text", "content": 'import type { NextConfig } from "next";\n\n// Same-origin proxy target for the storefront API. The public key\n// decides: a real `cpk_live_\u2026` / `cpk_test_\u2026` only resolves against\n// hosted Cimplify, so browser cart writes go to the same place the\n// server catalogue reads come from. Anything else (`mock-dev`, empty)\n// falls back to the local `cimplify dev` mock in dev.\nconst publicKey = process.env.NEXT_PUBLIC_CIMPLIFY_PUBLIC_KEY?.trim() ?? "";\nconst keyTargetsHostedCimplify =\n publicKey.startsWith("cpk_live_") || publicKey.startsWith("cpk_test_");\nconst STOREFRONT_URL =\n process.env.NODE_ENV === "production" || keyTargetsHostedCimplify\n ? "https://storefronts.cimplify.io"\n : "http://127.0.0.1:8787";\n\nif (STOREFRONT_URL === "http://127.0.0.1:8787") {\n console.warn(\n "[cimplify] next.config resolved the local storefront API URL; production deploys must run with NODE_ENV=production.",\n );\n}\n\n// Cache Components (\'use cache\' + cacheTag/cacheLife) require Node-specific\n// setTimeout atomicity and serialize a postponed state that routinely exceeds\n// CF Workers\' 128MB zlib limit. We\'re on Cloudflare Workers via opennext, so\n// we stay on Next 16\'s "Previous Model" \u2014 `fetch.next.{revalidate,tags}` via\n// the SDK\'s `cacheOptions`, plus `export const revalidate` per page. See\n// https://nextjs.org/docs/app/guides/caching-without-cache-components.\nconst nextConfig: NextConfig = {\n async redirects() {\n return [\n { source: "/login", destination: "/account", permanent: false },\n { source: "/signup", destination: "/account", permanent: false },\n ];\n },\n async rewrites() {\n return [\n { source: "/api/v1/:path*", destination: `${STOREFRONT_URL}/api/v1/:path*` },\n { source: "/img/:path*", destination: `${STOREFRONT_URL}/img/:path*` },\n { source: "/elements/:path*", destination: `${STOREFRONT_URL}/elements/:path*` },\n { source: "/_mock/:path*", destination: `${STOREFRONT_URL}/_mock/:path*` },\n ];\n },\n images: {\n loader: "custom",\n loaderFile: "./lib/cimplify-loader.ts",\n remotePatterns: [\n { protocol: "http", hostname: "127.0.0.1", port: "8787", pathname: "/img/**" },\n { protocol: "http", hostname: "localhost", port: "8787", pathname: "/img/**" },\n { protocol: "http", hostname: "localhost", port: "3000", pathname: "/img/**" },\n { protocol: "https", hostname: "loremflickr.com", pathname: "/**" },\n { protocol: "https", hostname: "images.unsplash.com", pathname: "/**" },\n { protocol: "https", hostname: "static-tmp.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "storefrontassetscdn.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "cdn.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "res.cloudinary.com", pathname: "/cimplify/**" },\n ],\n },\n};\n\nexport default nextConfig;\n' }, { "path": "CLAUDE.md", "kind": "text", "content": "# CLAUDE.md\n\nThis project was scaffolded from a Cimplify storefront template (`cimplify init`).\n\n## Read these first\n\n- **`AGENTS.md`** at the project root \u2014 the file \u2194 `brand.X` field map for *this template's* industry, plus the architectural rules.\n- **`.claude/skills/cimplify-storefront/SKILL.md`** \u2014 the playbook for common tasks (rebrand, add a section, wire a Server Action, deploy, eject a component). Invoke it whenever you're asked to change content, palette, copy, or routing.\n\n## The two-line summary\n\n1. **Edit `lib/brand.ts`** for any visible string.\n2. **Edit `app/globals.css` `@theme` block** for any palette / radius / font change.\n\nThat covers ~95% of what merchants ask for. For anything else, follow the `cimplify-storefront` skill.\n\n## Don't do\n\n- Hardcode strings in pages or components.\n- Enable `cacheComponents: true` in `next.config.ts` \u2014 we're on Cloudflare Workers, where `'use cache'` postponed state blows past CF's 128MB zlib limit. This template stays on Next 16's \"Previous Model\" (ISR): `export const revalidate` per page + `cacheOptions: { revalidate, tags }` on SDK reads.\n- Add `'use cache'`, `cacheTag`, or `cacheLife` anywhere. Use the SDK's `cacheOptions` instead.\n- Use `unstable_cache` \u2014 it's gone in Next 16. Use SDK `cacheOptions` or `fetch.next.{revalidate,tags}`.\n- Run `bun test` (Bun's `vi` shim is incomplete) \u2014 use `bun run test:run`.\n" }, { "path": "app/about/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `About \u2014 ${brand.name}`,\n description: brand.description,\n};\n\nexport default function AboutPage() {\n const a = brand.about;\n // Title supports a single \\n for a hard line break.\n const titleParts = a.title.split("\\n");\n return (\n <article className="max-w-3xl mx-auto px-6 sm:px-8 py-16">\n <p className="text-[11px] font-mono uppercase tracking-[0.16em] text-primary mb-2">\n {a.eyebrow}\n </p>\n <h1 className="text-[clamp(2.25rem,5vw,3.5rem)] font-bold mb-6 -tracking-[0.025em] leading-tight">\n {titleParts.map((line, i) => (\n <span key={i}>\n {line}\n {i < titleParts.length - 1 && <br />}\n </span>\n ))}\n </h1>\n <div className="prose prose-lg max-w-none space-y-5 text-foreground/90 leading-relaxed">\n {a.paragraphs.map((p, i) => (\n <p key={i}>{p}</p>\n ))}\n {a.sections.map((s) => (\n <div key={s.heading}>\n <h2 className="text-2xl font-semibold mt-10 mb-3 -tracking-[0.02em]">\n {s.heading}\n </h2>\n <p>{s.body}</p>\n </div>\n ))}\n </div>\n </article>\n );\n}\n' }, { "path": "app/llms.txt/route.ts", "kind": "text", "content": 'import { getServerClient, tags, type Product } from "@cimplify/sdk/server";\nimport { brand } from "@/lib/brand";\nimport { getSiteUrl } from "@/lib/site-url";\n\nexport const revalidate = 3600;\n\nasync function buildLlmsTxt(SITE_URL: string): Promise<string> {\n const client = getServerClient();\n const [productsRes, categoriesRes, collectionsRes] = await Promise.all([\n client.catalogue.getProducts(\n { limit: 500 },\n { cacheOptions: { revalidate: 3600, tags: [tags.products()] } },\n ),\n client.catalogue.getCategories({\n cacheOptions: { revalidate: 3600, tags: [tags.categories()] },\n }),\n client.catalogue.getCollections({\n cacheOptions: { revalidate: 3600, tags: [tags.collections()] },\n }),\n ]);\n\n const products: Product[] = productsRes.ok ? productsRes.value.items : [];\n const categories = categoriesRes.ok ? categoriesRes.value : [];\n const collections = collectionsRes.ok ? collectionsRes.value : [];\n\n const lines: string[] = [];\n lines.push(`# ${brand.name}`);\n lines.push("");\n lines.push(`> ${brand.llms.summary}`);\n lines.push("");\n lines.push("## Browse");\n lines.push(`- [Home](${SITE_URL}/)`);\n lines.push(`- [Shop](${SITE_URL}/shop): Full catalogue with filter and sort.`);\n\n if (categories.length > 0) {\n lines.push("");\n lines.push("## Categories");\n for (const c of categories) {\n lines.push(\n `- [${c.name}](${SITE_URL}/categories/${c.slug})${c.description ? `: ${c.description}` : ""}`,\n );\n }\n }\n\n if (collections.length > 0) {\n lines.push("");\n lines.push("## Collections");\n for (const c of collections) {\n lines.push(\n `- [${c.name}](${SITE_URL}/collections/${c.slug})${c.description ? `: ${c.description}` : ""}`,\n );\n }\n }\n\n if (products.length > 0) {\n lines.push("");\n lines.push("## Products");\n for (const p of products) {\n const slug = p.slug ?? p.id;\n const price = `${brand.currency} ${p.default_price}`;\n const desc = p.description ? ` \u2014 ${p.description.replace(/\\s+/g, " ").slice(0, 200)}` : "";\n lines.push(`- [${p.name}](${SITE_URL}/products/${slug}) (${price})${desc}`);\n }\n }\n\n lines.push("");\n lines.push("## Information");\n lines.push(`- [About](${SITE_URL}/about)`);\n lines.push(`- [Support / FAQ](${SITE_URL}/faq)`);\n lines.push(`- [Terms of Service](${SITE_URL}/terms)`);\n lines.push(`- [Privacy Policy](${SITE_URL}/privacy)`);\n lines.push(`- [Sitemap (XML)](${SITE_URL}/sitemap.xml)`);\n lines.push("");\n lines.push("## Contact");\n lines.push(`- Email: ${brand.contact.email}`);\n lines.push(`- Phone: ${brand.contact.phone}`);\n lines.push(`- Address: ${brand.contact.address}`);\n\n return lines.join("\\n") + "\\n";\n}\n\n/**\n * `/llms.txt` \u2014 machine-readable site index for LLMs (per llmstxt.org).\n * Lets coding agents and chat assistants find products, categories, and\n * support pages without scraping HTML. Plain Markdown so it streams cheaply\n * into context windows.\n */\nexport async function GET(): Promise<Response> {\n const body = await buildLlmsTxt(await getSiteUrl());\n return new Response(body, {\n headers: {\n "Content-Type": "text/plain; charset=utf-8",\n "Cache-Control": "public, max-age=0, s-maxage=3600, stale-while-revalidate=86400",\n },\n });\n}\n' }, { "path": "app/contact/contact-form.tsx", "kind": "text", "content": `"use client";
|
|
675
675
|
|
|
676
676
|
import { useState } from "react";
|
|
677
677
|
|
|
@@ -1665,7 +1665,7 @@ export const brand: Brand = {
|
|
|
1665
1665
|
* the root layout prerenderable.
|
|
1666
1666
|
*/
|
|
1667
1667
|
export const SITE_URL = "https://example.com";
|
|
1668
|
-
` }, { "path": "lib/site-url.ts", "kind": "text", "content": 'import { SITE_URL } from "./site.config";\n\n/** Canonical absolute URL for this storefront. */\nexport async function getSiteUrl(): Promise<string> {\n return SITE_URL;\n}\n' }, { "path": "lib/cimplify-loader.ts", "kind": "text", "content": 'import type { ImageLoader } from "next/image";\n\nimport { assetUrl, isCimplifyAsset } from "@cimplify/sdk";\n\nconst cdnBase = process.env.NEXT_PUBLIC_CIMPLIFY_CDN_URL?.trim() || undefined;\n\nconst cimplifyImageLoader: ImageLoader = ({ src, width, quality }) => {\n if (isCimplifyAsset(src, cdnBase)) {\n return assetUrl(src, {\n base: cdnBase,\n w: width,\n quality,\n format: "auto",\n });\n }\n return src;\n};\n\nexport default cimplifyImageLoader;\n' }, { "path": "lib/cart.ts", "kind": "text", "content": '"use client";\n\nimport { useCart } from "@cimplify/sdk/react";\n\n/**\n * Reactive cart count for the header pill. Subscribes to the SDK cart\n * state \u2014 updates immediately on add / remove / quantity change.\n */\nexport function useCartCount(): { count: number } {\n const { itemCount } = useCart();\n return { count: itemCount };\n}\n' }, { "path": ".gitignore", "kind": "text", "content": "node_modules\n.next\n.open-next\nout\n.env\n.env.local\n.env*.local\n.DS_Store\n*.tsbuildinfo\nnext-env.d.ts\n" }, { "path": "package.json", "kind": "text", "content": '{\n "name": "__STOREFRONT_NAME__",\n "private": true,\n "version": "0.0.0",\n "scripts": {\n "dev": "concurrently -k -n mock,next -c blue,magenta \\"cimplify-mock --seed pharmacy --quiet\\" \\"next dev\\"",\n "dev:storefront": "next dev",\n "dev:mock": "cimplify-mock --seed pharmacy",\n "build": "next build",\n "start": "next start",\n "typecheck": "tsc --noEmit",\n "test": "vitest",\n "test:run": "vitest run",\n "check:brand": "vitest run __tests__/brand.test.ts",\n "check:cart": "vitest run __tests__/cart-flow.test.ts",\n "check:contract": "vitest run __tests__/contract.test.ts",\n "check": "bun run typecheck && bun run test:run"\n },\n "dependencies": {\n "@cimplify/sdk": "^0.56.0",\n "next": "^16.2.6",\n "react": "^19.0.0",\n "react-dom": "^19.0.0"\n },\n "devDependencies": {\n "@tailwindcss/postcss": "^4.2.4",\n "@types/node": "^22.10.0",\n "@types/react": "^19.0.0",\n "@types/react-dom": "^19.0.0",\n "concurrently": "^9.0.0",\n "tailwindcss": "^4.2.4",\n "typescript": "^5.9.3",\n "vitest": "^4.1.5"\n }\n}\n' }, { "path": "bun.lock", "kind": "binary", "content": "ewogICJsb2NrZmlsZVZlcnNpb24iOiAxLAogICJjb25maWdWZXJzaW9uIjogMSwKICAid29ya3NwYWNlcyI6IHsKICAgICIiOiB7CiAgICAgICJuYW1lIjogIl9fU1RPUkVGUk9OVF9OQU1FX18iLAogICAgICAiZGVwZW5kZW5jaWVzIjogewogICAgICAgICJAY2ltcGxpZnkvc2RrIjogIl4wLjU0LjAiLAogICAgICAgICJuZXh0IjogIl4xNi4yLjYiLAogICAgICAgICJyZWFjdCI6ICJeMTkuMC4wIiwKICAgICAgICAicmVhY3QtZG9tIjogIl4xOS4wLjAiLAogICAgICB9LAogICAgICAiZGV2RGVwZW5kZW5jaWVzIjogewogICAgICAgICJAdGFpbHdpbmRjc3MvcG9zdGNzcyI6ICJeNC4yLjQiLAogICAgICAgICJAdHlwZXMvbm9kZSI6ICJeMjIuMTAuMCIsCiAgICAgICAgIkB0eXBlcy9yZWFjdCI6ICJeMTkuMC4wIiwKICAgICAgICAiQHR5cGVzL3JlYWN0LWRvbSI6ICJeMTkuMC4wIiwKICAgICAgICAiY29uY3VycmVudGx5IjogIl45LjAuMCIsCiAgICAgICAgInRhaWx3aW5kY3NzIjogIl40LjIuNCIsCiAgICAgICAgInR5cGVzY3JpcHQiOiAiXjUuOS4zIiwKICAgICAgICAidml0ZXN0IjogIl40LjEuNSIsCiAgICAgIH0sCiAgICB9LAogIH0sCiAgInBhY2thZ2VzIjogewogICAgIkBhbGxvYy9xdWljay1scnUiOiBbIkBhbGxvYy9xdWljay1scnVANS4yLjAiLCAiIiwge30sICJzaGE1MTItVXJjQUJCKzRiVXJGQUJ3Ymx1VElCRXJYd3Zic1UvVjdUWldmbWJnSmZia3dpQnV6aVM5Z3hkT0RVeXVpZWNmZEdRODVqZ2xNVzZqdVMzK3o1VHNLTHc9PSJdLAoKICAgICJAYmFiZWwvcnVudGltZSI6IFsiQGJhYmVsL3J1bnRpbWVANy4yOS4yIiwgIiIsIHt9LCAic2hhNTEyLUppRFNoSDQ1ektIV3lHZTRaTlZSckNqQno4Tmg5VE1tWkcxa2g0UVRLOGhDQlRXQmk4RGEraTdzMWZKdzcvbFlwTTRjY2VwU05mcXpaL1F2QUJCaTVnPT0iXSwKCiAgICAiQGJhc2UtdWkvcmVhY3QiOiBbIkBiYXNlLXVpL3JlYWN0QDEuNS4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBiYWJlbC9ydW50aW1lIjogIl43LjI5LjIiLCAiQGJhc2UtdWkvdXRpbHMiOiAiMC4yLjkiLCAiQGZsb2F0aW5nLXVpL3JlYWN0LWRvbSI6ICJeMi4xLjgiLCAiQGZsb2F0aW5nLXVpL3V0aWxzIjogIl4wLjIuMTEiLCAidXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUiOiAiXjEuNi4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBkYXRlLWZucy90eiI6ICJeMS4yLjAiLCAiQHR5cGVzL3JlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgImRhdGUtZm5zIjogIl40LjAuMCIsICJyZWFjdCI6ICJeMTcgfHwgXjE4IHx8IF4xOSIsICJyZWFjdC1kb20iOiAiXjE3IHx8IF4xOCB8fCBeMTkiIH0sICJvcHRpb25hbFBlZXJzIjogWyJAZGF0ZS1mbnMvdHoiLCAiQHR5cGVzL3JlYWN0IiwgImRhdGUtZm5zIl0gfSwgInNoYTUxMi16MWdTQWxjZWQxeVkraU0rbUhERXRJa0Q4VUkzRWJzNTJNdUJQeHZWNmY1aFJ1dGsreHZDSC93dUI3aERxRHpLOUpHNUZvTXo1bmhycXRTczF3anQxQT09Il0sCgogICAgIkBiYXNlLXVpL3V0aWxzIjogWyJAYmFzZS11aS91dGlsc0AwLjIuOSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYmFiZWwvcnVudGltZSI6ICJeNy4yOS4yIiwgIkBmbG9hdGluZy11aS91dGlscyI6ICJeMC4yLjExIiwgInJlc2VsZWN0IjogIl41LjEuMSIsICJ1c2Utc3luYy1leHRlcm5hbC1zdG9yZSI6ICJeMS42LjAiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL3JlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgInJlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgInJlYWN0LWRvbSI6ICJeMTcgfHwgXjE4IHx8IF4xOSIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkB0eXBlcy9yZWFjdCJdIH0sICJzaGE1MTIteC9QRERDWXpvcVBwanJkeWIzVmN5eWxUSTJJalVYRXRZREdpNWZvaDdLc25tTkpJSWFWd0EyR0xnREgxZHBzMUdnWGlKYkE2MGhNK0F5dVRmUXpJdnc9PSJdLAoKICAgICJAY2ltcGxpZnkvc2RrIjogWyJAY2ltcGxpZnkvc2RrQDAuNTQuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYmFzZS11aS9yZWFjdCI6ICJeMS40LjEiLCAiY2xzeCI6ICJeMi4xLjEiLCAiZGF0ZS1mbnMiOiAiXjQuMS4wIiwgImxpYnBob25lbnVtYmVyLWpzIjogIjEuMTIuNDEiLCAicmVhY3QtZGF5LXBpY2tlciI6ICJeOS4xNC4wIiwgInRhaWx3aW5kLW1lcmdlIjogIl4zLjUuMCIsICJ6b2QiOiAiXjQuNC4zIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBwYXlzdGFjay9pbmxpbmUtanMiOiAiXjIuMjIuOCIsICJtc3ciOiAiPj0yLjAuMCIsICJyZWFjdCI6ICI+PTE3LjAuMCIsICJ2aXRlc3QiOiAiPj0yLjAuMCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkBwYXlzdGFjay9pbmxpbmUtanMiLCAibXN3IiwgInJlYWN0IiwgInZpdGVzdCJdLCAiYmluIjogeyAiY2ltcGxpZnktbW9jayI6ICJkaXN0L21vY2svY2xpLm1qcyIgfSB9LCAic2hhNTEyLVlVTi9sT3FWaUhjaTF2OVVTV1d3QVd0eTI5cEVYQmRMVHVLYXJTbDhFcGFmV2g1amtkR1oxUStOZTkvYmZnVFptUjhpVFVsdEE4VTdnbFYyRm9SU2dnPT0iXSwKCiAgICAiQGRhdGUtZm5zL3R6IjogWyJAZGF0ZS1mbnMvdHpAMS40LjEiLCAiIiwge30sICJzaGE1MTItUDVMVU5odGJqNllmSTNpSmp3NUVMOWVVQUc2T2l0RDBXM2ZXUWNwUWpEUmMvUUlzTDB0Uk51TzFQY0R2UGNjV0wxZlNUWFhkRTFkcytsOTVEVi9PRkE9PSJdLAoKICAgICJAZW1uYXBpL2NvcmUiOiBbIkBlbW5hcGkvY29yZUAxLjEwLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGVtbmFwaS93YXNpLXRocmVhZHMiOiAiMS4yLjEiLCAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTIteXE2T2tKNHA4MkNBZlBsMHU5bVFlYlFIS1BKa1k3V3JJdWsyMDVjVFluWWUrazJaOFlCaDExRnJiUkcvSDZpaGlycWNhY09nbDJCSU84b3lNUUxlWHc9PSJdLAoKICAgICJAZW1uYXBpL3J1bnRpbWUiOiBbIkBlbW5hcGkvcnVudGltZUAxLjEwLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTItZXd2WWxrODZ4VW9HSTB6UVJOcS9tQysxNlIxUWVEbEtReTIxS2kzb1NZWE5nTGI0NUdWMVA2QTBNKy9zNm55Q3VORHFlNVZwYVk4NEJ6WEd3VmJ3RkE9PSJdLAoKICAgICJAZW1uYXBpL3dhc2ktdGhyZWFkcyI6IFsiQGVtbmFwaS93YXNpLXRocmVhZHNAMS4yLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTItdVRJSTdPWUYrL01lcy9NcmNJT1lwNXlPdFNNTEJXU0lvTFBwY2d3aXBvaUtibGk2azMyMnRjb0ZzeG9JSXhQRHFXMDFTUUdBZ2tvNEV6WmkyQk52Mnc9PSJdLAoKICAgICJAZXNidWlsZC9haXgtcHBjNjQiOiBbIkBlc2J1aWxkL2FpeC1wcGM2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYWl4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi0xVkNJQ1d5cGVRS2hWYkU5b1cvc0phQW1qTHhoVnFhY2RrdlBMRWp3bHR0amZ3RU5SU0NsUzhFakJ6MEt6UnlGU0NQRElrdVhXMzRKZS92azd6ZEI3UT09Il0sCgogICAgIkBlc2J1aWxkL2FuZHJvaWQtYXJtIjogWyJAZXNidWlsZC9hbmRyb2lkLWFybUAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtIiB9LCAic2hhNTEyLVFOZFFFcHM3RGZGd0UzaFhpVTRCWmVPVjY4SEh6WXdHZDBOdGhoZDN1Q2trRUtLNy9SNk1UZ00wUDdIN0ZBczVwVS9ESVdzdmlNbUVHeEVveElaK1pRPT0iXSwKCiAgICAiQGVzYnVpbGQvYW5kcm9pZC1hcm02NCI6IFsiQGVzYnVpbGQvYW5kcm9pZC1hcm02NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItYkJ5NjlwZ2ZoTUd0Q253cEMveDVRaGZ4QXovY0JnUTllbmJ0d2pmNlY5bG5QSS9oTXlUOWlXcFIxYXJtMGwza3R0VHI0TDBLU0xwS21McC9pbEtTOUE9PSJdLAoKICAgICJAZXNidWlsZC9hbmRyb2lkLXg2NCI6IFsiQGVzYnVpbGQvYW5kcm9pZC14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImFuZHJvaWQiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1UVmhkVnRRSUZ1VnBJSVIyODJidGNHQzJvR1FvU2ZaZm1CZFRpcDJhbkNhVlljcVdsWlhHY2RjS0lVa2xmWDJ3ajBKa2xOWWd6MzlPQnFoMmNxWHZjUT09Il0sCgogICAgIkBlc2J1aWxkL2Rhcndpbi1hcm02NCI6IFsiQGVzYnVpbGQvZGFyd2luLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVkxZ2lDZk00bmxIRFdFZlNja016ZVdOZFFTMzFCUUdzOS9yb3V3NlViOTF0a0s3OWFJTVRIM3E5eEh2ekg4ZDB3RHJ1NUNpMGtXQjhiM3VwL25sMTZnPT0iXSwKCiAgICAiQGVzYnVpbGQvZGFyd2luLXg2NCI6IFsiQGVzYnVpbGQvZGFyd2luLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiZGFyd2luIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItQ0pzcnk4WkdNNVZGVmV5VVlCM2NkS3BkL0g2OVBZZXo0ZUpoMVcvdDM4dnp1dGRqRWp0UDdoQjZlTEtCb09keGNBbEN0RVlIelEvUEovb1U5STR1MEE9PSJdLAoKICAgICJAZXNidWlsZC9mcmVlYnNkLWFybTY0IjogWyJAZXNidWlsZC9mcmVlYnNkLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi15WXErMzlObFRSelUyWG1vUFc0bDVJZnBsOWZxU2swbkFKWU0vVi9XVUdQRUZmZWsxZXBMSEpJa1RRTTZiQnMxc3dBcGpPNW5XZ3ZyODQzZzZUanh1UT09Il0sCgogICAgIkBlc2J1aWxkL2ZyZWVic2QteDY0IjogWyJAZXNidWlsZC9mcmVlYnNkLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiZnJlZWJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLTBGZ3ZPSjZVVU1mbHNIU1BMemRmRG5uQkJWb0NEdEJUVnluL01yV2xvVU52cS81U0ZtaDEzbDNkdmdSUGtEaWhSeGI3N1kxN01icWJDQWEyc3RyTVFRPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtYXJtIjogWyJAZXNidWlsZC9saW51eC1hcm1AMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTIta3JvNGMwUDg1R01mRllxVzRUV09wdm1GOHJGU2hiV0duckxxbHpwNFgxVE5XalJZM0pNWVVmREN0T3hQS09JWThCMFdDOEhONTFoR1A0STRoejRBYVE9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1hcm02NCI6IFsiQGVzYnVpbGQvbGludXgtYXJtNjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi0rODlVc1FUZlhkbWpJdlpTNm5Vbk9PTG9YbmtVVEI5aFI1UUFlTHJRZHpPU1dadk5TQVhBdGNSREhXdHFBVXRBbXY3Wk0xV1BPT2VTeER6enpNb2dpUT09Il0sCgogICAgIkBlc2J1aWxkL2xpbnV4LWlhMzIiOiBbIkBlc2J1aWxkL2xpbnV4LWlhMzJAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJpYTMyIiB9LCAic2hhNTEyLXlURWpvYXB5OFVQM3J2OGRCMGlwM0FmTXBSYnloU04zK2hZOG1vL2k0UVhGZUR4bWlZYkVLcDNaUmpCS2NPUDg2MlVhNGIxUERmd2x2YnV3WTdoSUdRPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtbG9vbmc2NCI6IFsiQGVzYnVpbGQvbGludXgtbG9vbmc2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItTmVxcVlrcmNHekZ3aTZDR1JHTk1PaldHR1NZT3Bxd0NqUzlmdmFVbFg1czN6d090bjFxd2cxczJpRTJzdkJlNFEvWU9HMXE2ODc1bGNBb1FLL0Y0VkE9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1taXBzNjRlbCI6IFsiQGVzYnVpbGQvbGludXgtbWlwczY0ZWxAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJub25lIiB9LCAic2hhNTEyLUljdlRsRjlkdExyZkwvTThXZ05JL3FKWUJFTlAzZWtnc0hiWVVJekV6cTVYSnp6VkVWL2ZYWTlXRlBmRUVYbXUzY2sycUpQOExHL3AzUThmN1pjMlhnPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtcHBjNjQiOiBbIkBlc2J1aWxkL2xpbnV4LXBwYzY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAicHBjNjQiIH0sICJzaGE1MTItSE95MGFMVEpUVnRvVGVHWmg0SFNYYU82TTk1cXU0azVsSmNINGd4djU2aWF5Y2Z6MVM4R08vNUpoNlg0WTFZaUkwaDdjUnlMaStIaXhNUis4OHN3YWc9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1yaXNjdjY0IjogWyJAZXNidWlsZC9saW51eC1yaXNjdjY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1pOEpVREF1ZnB6OWpPem80eUlTaENUY1h6UzA3dkVnV3p5WDNOSDJHN0xFRlZnckxFaGp3TDNhakZFNGZaSTNJNFpnaU03SkgzR1E3UmVPYlJPdlNVQT09Il0sCgogICAgIkBlc2J1aWxkL2xpbnV4LXMzOTB4IjogWyJAZXNidWlsZC9saW51eC1zMzkweEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogInMzOTB4IiB9LCAic2hhNTEyLWpGbnUrNlViTGx6SWpQUXBXQ05oNVF0cmNOZk1MamdJYXZud1BRQWZvR3g0cTE3b2NPVTlNc1EyUVZ2Rnh3UW9XcFpUOER2VExvb1R2bU9RWGtPNTFnPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgteDY0IjogWyJAZXNidWlsZC9saW51eC14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItNmUwY3ZYd3pPblZXSkhxK21za1A4RE5TcktCcjFiVUxCdm5GTHBjMUtZK2QraXJaU2daMDJUR3NlNUZzYWZLUzVqZzJlNHBidks2VFBYYUYvQTYrQ0E9PSJdLAoKICAgICJAZXNidWlsZC9uZXRic2QtYXJtNjQiOiBbIkBlc2J1aWxkL25ldGJzZC1hcm02NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibm9uZSIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItdlVua0JZeFpXNGhML2llOTFoU3FhU05qdWxPbllYRTFWU0x1c252SGcydTNqZXdKQnozWXpCOStvQ3c4REFCZVZxWkdnOTR0OXR5WkZvSG1hOGdXWlE9PSJdLAoKICAgICJAZXNidWlsZC9uZXRic2QteDY0IjogWyJAZXNidWlsZC9uZXRic2QteDY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJub25lIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItWEFnOHBJUW41Q3poT0I4b2RJY0FtNDJRc09mYTk4U0JlS1VkbzR4YThPdlg4TGJNWnFFdGdlV0U5UC9XeHQ3TWxHMlFxdmpHdGhzK25xNDhUclVpS3c9PSJdLAoKICAgICJAZXNidWlsZC9vcGVuYnNkLWFybTY0IjogWyJAZXNidWlsZC9vcGVuYnNkLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJvcGVuYnNkIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1DdDJXY0ZFQU5sRkR0cDFuVkFYU05CUER4eVUrajcrdElkLy9pSFhVMmYvbE41QW1PNHpMeWhEY3BSNUN6MXIwOG1WeHp0M0pweXQ0UG1YUTFPNis3QT09Il0sCgogICAgIkBlc2J1aWxkL29wZW5ic2QteDY0IjogWyJAZXNidWlsZC9vcGVuYnNkLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAib3BlbmJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLXhBR0doeU9ROU90bTFYdThOVDFpZkdMbkE2TTNzSnhaNml4eWxiK3ZJVVZ6dnZkNkdPQUxwd1FyWXJ0bFBvdU1xZC92U2JnZWh6NkhhVms0KzdBZmh3PT0iXSwKCiAgICAiQGVzYnVpbGQvc3Vub3MteDY0IjogWyJAZXNidWlsZC9zdW5vcy14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogInN1bm9zIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItTXcrdHp5NHBwNndaRUswK0x3cjc2cFdManJ0am1KeVVCMjN0SEtxRURQNzRSM3E5NWx1WS9iWHFYWmVZbDROWWx2d09xb1JLbEluUWlhbGdDS3k2N1E9PSJdLAoKICAgICJAZXNidWlsZC93aW4zMi1hcm02NCI6IFsiQGVzYnVpbGQvd2luMzItYXJtNjRAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1BVlVQNDI4VlFUU2RkZ3V6OWRPOW5nYitFNWFTY3lnN25PZUpEckYxSFBZdTU1NWdtemEzYkRHTVBobVZYTDhzdkRTb3FQQ3NDUGpiMjY1eUcva0xLUT09Il0sCgogICAgIkBlc2J1aWxkL3dpbjMyLWlhMzIiOiBbIkBlc2J1aWxkL3dpbjMyLWlhMzJAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJpYTMyIiB9LCAic2hhNTEyLWkxc1crMWkrb1d2UXpTZ2ZSY3h4RzJrNEk5bjNPOU5ScXk4VSt1dWdhVDJEeTdrTE85WTd3STcyaGFPYWh4Y2VNWDhoWkF6Z0dvdTFGaG5kUmxkeFJnPT0iXSwKCiAgICAiQGVzYnVpbGQvd2luMzIteDY0IjogWyJAZXNidWlsZC93aW4zMi14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItbk9UMnZaTnc2aEorejQzb1AxU1BlYS9HLzZBYk42WCtiR05oTnVxOE50Ukh5NHdzTWh3NzY1SUtMTm1uamVrN0d2aldCWVE4UTVWQm9ZVEZnOXkxVVE9PSJdLAoKICAgICJAZmxvYXRpbmctdWkvY29yZSI6IFsiQGZsb2F0aW5nLXVpL2NvcmVAMS43LjUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGZsb2F0aW5nLXVpL3V0aWxzIjogIl4wLjIuMTEiIH0gfSwgInNoYTUxMi0xSWg0V1RXeXcwK2xLeUZNY0JIR2JiNVU1RnR1SEp1dWpveXlyNXpUYVdTNUVZTWVUNkpiMkF1RGVmdHNDc0V1Y2hPK21NMmlqNStxOWNyaHlkekxoUT09Il0sCgogICAgIkBmbG9hdGluZy11aS9kb20iOiBbIkBmbG9hdGluZy11aS9kb21AMS43LjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGZsb2F0aW5nLXVpL2NvcmUiOiAiXjEuNy41IiwgIkBmbG9hdGluZy11aS91dGlscyI6ICJeMC4yLjExIiB9IH0sICJzaGE1MTItOWdaU0FJNVhNMzY4ODBQUE1tLy85ZGZpRW5nWW9DNkFtMml6RVMxRkY0MDZZRnNqdnlCTW1lSjJnNFNBanUzeFd3dHV5bk5SRkwyczloZ3hwTEk1U1E9PSJdLAoKICAgICJAZmxvYXRpbmctdWkvcmVhY3QtZG9tIjogWyJAZmxvYXRpbmctdWkvcmVhY3QtZG9tQDIuMS44IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBmbG9hdGluZy11aS9kb20iOiAiXjEuNy42IiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgInJlYWN0IjogIj49MTYuOC4wIiwgInJlYWN0LWRvbSI6ICI+PTE2LjguMCIgfSB9LCAic2hhNTEyLWNDNTJiSHdNL24vQ3hTODdGSDB5V2RuZ0VacmpkdExXL3FWcnVvNjhxZytwcks3WlE0WUdkdXQyR3lEVnBvR2VBWWUvaDg5OXJWZU9WbTZPaTQwazJBPT0iXSwKCiAgICAiQGZsb2F0aW5nLXVpL3V0aWxzIjogWyJAZmxvYXRpbmctdWkvdXRpbHNAMC4yLjExIiwgIiIsIHt9LCAic2hhNTEyLVJpQi95SWg3OHBjSXhsNmxMTUcwQ2dCWEFaMlkwZVZIcU1QWXVndSs5VTBBZVQ2WUJlaUpwZjdsYmRKTkl1Z0ZQNVNJandOUmdvNERoUjFReGkyNkdnPT0iXSwKCiAgICAiQGltZy9jb2xvdXIiOiBbIkBpbWcvY29sb3VyQDEuMS4wIiwgIiIsIHt9LCAic2hhNTEyLVRkNzZxN2o1N28vdExWZGdTNzQ2Y1lBUmZTeXhrOGlFZlJ4ZXdMOWg0T016WWhiVzRUQWNwcGwwbVQ0ZXlxWGRkaDZML2p3b003NW1vN2l4YS9wQ2VRPT0iXSwKCiAgICAiQGltZy9zaGFycC1kYXJ3aW4tYXJtNjQiOiBbIkBpbWcvc2hhcnAtZGFyd2luLWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiAiMS4yLjQiIH0sICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLWltdFEzV01KWGJNWTRmeGIvTmRwNkhCVE5WdFdDVUkwV2RvYnloZUdmNSthZDZ4WDhWSURPOHUyeEU0cWMvZnIwOENLRy83ZERzZUZ0bjZNNmcvcjN3PT0iXSwKCiAgICAiQGltZy9zaGFycC1kYXJ3aW4teDY0IjogWyJAaW1nL3NoYXJwLWRhcndpbi14NjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWRhcndpbi14NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1ZTkVGQUYvNEtRL1BlVzBOK3IrYVZWc29JWTAvcXh4aWtGMlNXZHArTlJrbU1CN3k5TEJaQVZxUTR5aEdDbS9IM0gyNzBPU3lrcW1RTUtMQmhCSkRFdz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjRAMS4yLjQiLCAiIiwgeyAib3MiOiAiZGFyd2luIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi16cWpqbzdSYXRGZkZvUDBNa1E1MWpmdUZaQm5WRTJwUmlheWRLSjFHL3JIWnZuc3JIQU9jUUFMSWk5c0E1Y281eGVuUWRUdWdDdnRiMWN1Zjc4VmY0Zz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4teDY0IjogWyJAaW1nL3NoYXJwLWxpYnZpcHMtZGFyd2luLXg2NEAxLjIuNCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi0xSU9kNXhmVmhsR3dYK3pYdjJOOTNrMHlNT052VWxBTnlsYkp3MWVUYWg4Sy9KdHBpMTVLQytXU2lhWC9uQm1ibTJIeFJNMWdaMG5TZGpTc3JaYkdLZz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm0iOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm1AMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybSIgfSwgInNoYTUxMi1iRkk3eGNLRkVMZGlOQ1ZvdjhlNDRJYTR1MmJ5QStsM1h0c0FqK1E4dGZDd082QlE4aURvallkdm9QTXFzS0RrdW9PbytYNkhaQTBzMHExMUFOTVE4QT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm02NCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybTY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1leGNqWDhEZnNJY0oxMHgxS3pyNFJjV2UxZWRDOVBxdURSUlB4M1lWQ3ZRditVNXA3WWluMnMzMmZ0emlrWG9qYjFQSUZjLzlNdDI4L3kraVJrbGtydz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1wcGM2NCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi1GTXV2R2lqTERZRzZsVytiL1V2eWlsVVd1NUF5dSszcjJkMVM4bm90aUdDSXlZVS83NmVpZzFVZk1ta1o3dndnT3J6S3psUWJGU3VRZmdtN0dZVVBwQT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1yaXNjdjY0IjogWyJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgtcmlzY3Y2NEAxLjIuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1vVkRiY1I0elVDMGNlODJ0ZXViU20reDZFVGl4dEtaQmgvcWJSRUlPY0kzY1VMekR5YjE4U3IvV2N5eDdOUlFlUXpPaUhUTmJaRkYxVXdQUzJzY3lHQT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1zMzkweCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXMzOTB4QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJzMzkweCIgfSwgInNoYTUxMi1xbXA5VnJ6Z1BnTW9HWnlQdnJRSHFrMDJ1eWpBMC9RclRPMjZUcWs2bDRaVjBNUFdJVzZMVGtxT0lvditKMXlFdTdNYkZRYURwd2R3SktoYkp2dVJ4UT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjRAMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi10SnhpaUxzbUhjOUF4MWJ6M29hT1lCVVJUWEdJUkRPREJxaHZlVkhvbnJISjkvK2s4OXFiTGwwYmNKbnMrZTR0NHJ2YU5CeGFFWnNGdFNmQWRxdVBydz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjRAMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLUZWUUh1d3gxSUl1Tm93OVFBYllVekorRW44S2NWbTlMazUrdUdVUUpIYVptTUVDWm1PbGl4OUhuSDduMVRSa1hNUzBwR3hJSm9rSVZCOVN1cVpHR1h3PT0iXSwKCiAgICAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4bXVzbC14NjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wteDY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItK0xweUJrN0w0NFpJWHd6L1ZZZmdsYVgvb2t4ZXpFU2M2VXhEU295bzJLczZKeGM0WTdzR2pwZ1U5czRQTWdxZ2pqMWdaQ3lsVGllTmFtcUExTUY3RGc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4LWFybSI6IFsiQGltZy9zaGFycC1saW51eC1hcm1AMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybSI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItOWRMcXN2d3RnMXV1WEJHWktzeGVtOTU5NSt1anYwc0o2Vmk4d2NUQU5TRnB3Vi9HT05hdDVlQ2t6UW8vMU82elJJa2gwbS84KzVCanJScjdqRFVTWnc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4LWFybTY0IjogWyJAaW1nL3NoYXJwLWxpbnV4LWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm02NCI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1iS1F6YUpSWS9ia1BPWHlLeDVFVnVwN3FrYW9qRUNHNk5MWXN3Z2t0T1pqYVhlY1NBZUNXaVp3d2lGZjMvWStPMUhyYXVpRTNGVnNHeEZnOGMyNHJaZz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGludXgtcHBjNjQiOiBbIkBpbWcvc2hhcnAtbGludXgtcHBjNjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0IjogIjEuMi40IiB9LCAib3MiOiAibGludXgiLCAiY3B1IjogInBwYzY0IiB9LCAic2hhNTEyLTd6em53TmFxVzZZdHNmckdHREE2QlJrSVNLQUFFMUpvMFFkcE5ZWE5NSHUyKzBkVHJQZmxUTE5rcGM4bDdNVVA1TTE2WkpjVXZ5c1ZXV3JNZWZacXVBPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eC1yaXNjdjY0IjogWyJAaW1nL3NoYXJwLWxpbnV4LXJpc2N2NjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXJpc2N2NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi01MWdKdUxQVEthN3BpWVBhVnM4R21CeW83L1U3LzdUWk9xK2NuWEpJSFpLYXZJUkhBUDc3ZTNOMkhFbDNkZ2lxZEQvdzB5VWZpSm5JSTc3UHVEREZkdz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGludXgtczM5MHgiOiBbIkBpbWcvc2hhcnAtbGludXgtczM5MHhAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXMzOTB4IjogIjEuMi40IiB9LCAib3MiOiAibGludXgiLCAiY3B1IjogInMzOTB4IiB9LCAic2hhNTEyLW5RdENrMFBkS2ZobzNlQzVNcmJRb2lnSjJnZDFDZ2RkVU1rYWJVaityQmV2czh0WjJjVUxPeDQ2RTdveVgrMDRXR2ZBQmdJd21NQzBWcWllVGlSNGpnPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eC14NjQiOiBbIkBpbWcvc2hhcnAtbGludXgteDY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLU1FemQ4SFBLeFZ4VmVud0FhK0pSUHdFQzdRRmpvUFd1UzVOWm5CdDZCM3B1N0VHMkdlMGlkMW9MSFpwUEpkbjNPUUsrQlFEaXc5elN0aUhCVEpRUVFRPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eG11c2wtYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGludXhtdXNsLWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItZnBySlI2R3RSc010Nkt5ZnE0NElzQ2hWWmVHTjk3Z1REMzMxd2VSMWV4MWMxcnlwREVBQk42VG0yeGExd0U2bFliNURkRW5rMDNOWlBxQTdJZDIxeWc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4bXVzbC14NjQiOiBbIkBpbWcvc2hhcnAtbGludXhtdXNsLXg2NEAwLjM0LjUiLCAiIiwgeyAib3B0aW9uYWxEZXBlbmRlbmNpZXMiOiB7ICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXhtdXNsLXg2NCI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSmc4d05UMU1Vekl2aEJGeFZpcXJFaFdER3pxeW1vM3NWN3o3WnNhV2JaTkRMWFJKWm9SR3JqdWxwNjBZWXRWNHdmWThWSUtjV2lkam9qbExjV3JkOFE9PSJdLAoKICAgICJAaW1nL3NoYXJwLXdhc20zMiI6IFsiQGltZy9zaGFycC13YXNtMzJAMC4zNC41IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvcnVudGltZSI6ICJeMS43LjAiIH0sICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1PZFdURWlWa1kyUEh3cWtiQkk4ZnJGeFFRRmVrSGFTU2tVSUprd3pjbFdaZTY0TzFYNFVsVWpxcXFMYVBiVXBNT1FrNkZCdS9IdGxHWE5ibElzMGh1dz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzItYXJtNjQiOiBbIkBpbWcvc2hhcnAtd2luMzItYXJtNjRAMC4zNC41IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1XUTNBZ1dDV1lTYjJ5dCtJRzhtbkM2SmRrOVdoczdPMGd4cGhibHNMdmRoU3BTVHRtdTY5WkcxR2tiNk51dnhzTkFDd2lQVjZjTlNaTnp0MEtQc3c3Zz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzItaWEzMiI6IFsiQGltZy9zaGFycC13aW4zMi1pYTMyQDAuMzQuNSIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAiaWEzMiIgfSwgInNoYTUxMi1GVjltLzdObWVDbVNIREQ1ajQrNHBOSThDcDNhVytKdkxvWGNUVW8wSXF5alNmQVpKOGRJVW1pangxcWFKc0lpVStIb3N3NnhNNUtpakFXUkpDU2dOZz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzIteDY0IjogWyJAaW1nL3NoYXJwLXdpbjMyLXg2NEAwLjM0LjUiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi0rMjlZTXNxWTIvOWVGRWlXOTNlcVdudUxjV2N1Zm93WGV3d1NOSVQ2VXdaZFVVQ3JNM29Gak1XSC9aNi9UTW1iNGhsRmVubWZBVmJwV2V1cDJqcnlDdz09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogWyJAanJpZGdld2VsbC9nZW4tbWFwcGluZ0AwLjMuMTMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjIjogIl4xLjUuMCIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjQiIH0gfSwgInNoYTUxMi0ya2t0LzduaUo2TWdFUHhGMGJZZFE2ZXRaYUErZlF2RGNMS2NraHkxeUlRT3phb0tqQkJqU2o2My9hTFZqWUUzcWhSdDVkdk0rdVV5ZkNnNlVLQ0JiQT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3JlbWFwcGluZyI6IFsiQGpyaWRnZXdlbGwvcmVtYXBwaW5nQDIuMy41IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogIl4wLjMuNSIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjQiIH0gfSwgInNoYTUxMi1MSTl1LytsYVlHNERzMVRES1NKVzJZUHJJbGNWWU93aTJmVUM2eEI0M2x1ZUNqZ3hWNGxmZk9DWkN0WUZpSDZUTk9YK3RRS1h4OTdUNElLSGJoeUhFUT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3Jlc29sdmUtdXJpIjogWyJAanJpZGdld2VsbC9yZXNvbHZlLXVyaUAzLjEuMiIsICIiLCB7fSwgInNoYTUxMi1iUklTZ0NJalAyMC90YldTUFdNRWk1NFFWUFJaRXhrdUQ5bEpMK1VJeFVLdHdWSkE4d1cxVHJiMWpNczFSRlhvMUNCVE5aLzVocEM5UXZtS1dkb3BLdz09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3NvdXJjZS1tYXAiOiBbIkBqcmlkZ2V3ZWxsL3NvdXJjZS1tYXBAMC4zLjExIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogIl4wLjMuNSIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjUiIH0gfSwgInNoYTUxMi1aTXAxVjhaRmNQRzVkSVduUUxyM05TSTFNaUNVN1VFVGRTL0EwRzhWL1hXSHZKdjNac0ZxdXRKbjFZNVJQbUFQWDZGM0JpRTM5N09xdmVVLzlOQ3VJQT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3NvdXJjZW1hcC1jb2RlYyI6IFsiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjQDEuNS41IiwgIiIsIHt9LCAic2hhNTEyLWNZUTkzMTBncnF4dWVXYmwrV3VJVUlhaVVhRGNqN1dPcTVmVmhFbGpOVmdSZk9VaFk5ZnkyelR2Zm9xV3NuZWJoOFNsNzBWU2NGYklDdkpuTEtCME9nPT0iXSwKCiAgICAiQGpyaWRnZXdlbGwvdHJhY2UtbWFwcGluZyI6IFsiQGpyaWRnZXdlbGwvdHJhY2UtbWFwcGluZ0AwLjMuMzEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvcmVzb2x2ZS11cmkiOiAiXjMuMS4wIiwgIkBqcmlkZ2V3ZWxsL3NvdXJjZW1hcC1jb2RlYyI6ICJeMS40LjE0IiB9IH0sICJzaGE1MTItenpOUitTZFFTREp6Yzhqb2FlUDhRUW9DUXI4TnVZeDJkSUl5dGwxUWVCRVpISjl1VzZoZWJzcllnYno4aEp3VVFhbzNUV0NNdG1mVjhOdTF0d09MQXc9PSJdLAoKICAgICJAbmFwaS1ycy93YXNtLXJ1bnRpbWUiOiBbIkBuYXBpLXJzL3dhc20tcnVudGltZUAxLjEuNCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAdHlieXMvd2FzbS11dGlsIjogIl4wLjEwLjEiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQGVtbmFwaS9jb3JlIjogIl4xLjcuMSIsICJAZW1uYXBpL3J1bnRpbWUiOiAiXjEuNy4xIiB9IH0sICJzaGE1MTItM05RTk5nQTFZU2xKYi9rTUgxaWxkQVNQOUhXNy83a1luUkkyc3pXSmFvZmFTMWhXbWJHSTRIK2QzKzIyYUd6WFhOOUlKK24rR2lGVmNHaXBKUDE4b3c9PSJdLAoKICAgICJAbmV4dC9lbnYiOiBbIkBuZXh0L2VudkAxNi4yLjYiLCAiIiwge30sICJzaGE1MTItZ2Q4SG9ITjR1Zmo3M1dtUjNKbVZvbHJwSlI0N0lMSzZMb3VQNXhFbFBnbGFWeGlyNmUxYTdWenZUdkRXa09vUFhUOXJra1R6eUN4QnU0eWVaZlp3Y3c9PSJdLAoKICAgICJAbmV4dC9zd2MtZGFyd2luLWFybTY0IjogWyJAbmV4dC9zd2MtZGFyd2luLWFybTY0QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVpKR2trY05mWWdyck1rcU9kWjd6b0xhMVRPeTBxcGNNZmsvejRNaC9GS1V6NDBnVk8rSE5RV3FtTHhmNjdaNVdCNjREUnAwZGhFYnlIZmVsKzZzSlVnPT0iXSwKCiAgICAiQG5leHQvc3djLWRhcndpbi14NjQiOiBbIkBuZXh0L3N3Yy1kYXJ3aW4teDY0QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi12L1lMQkhJWTEzMkNlZDNwdUJKN1lKS3cxbHFzQ3JnY05vMmFSSmxDRXlRcnJDZVJKbHZHbG5teGhQeE5RSTNLRTNOMURONXI5VFBOUHZrYTNucTVSUT09Il0sCgogICAgIkBuZXh0L3N3Yy1saW51eC1hcm02NC1nbnUiOiBbIkBuZXh0L3N3Yy1saW51eC1hcm02NC1nbnVAMTYuMi42IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1SUE92cWxZQmJjUWprejlWUVFEWjJUMmJBUklqWFpWMUtGbHQrVjJNcjZTVy9lNEk5ZmNLc2FBMGhkeWYyRkhvVGxzVjJ4bkJkNVk5MTJyUC8xQ2U2dz09Il0sCgogICAgIkBuZXh0L3N3Yy1saW51eC1hcm02NC1tdXNsIjogWyJAbmV4dC9zd2MtbGludXgtYXJtNjQtbXVzbEAxNi4yLjYiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVVSVVR1MStkTWt4SnNQRmdtK09lRXZxOXdmNXN1ancwRXZnWXk4MFRER0hUU0xUbklIZXFiMEV1OEEzc0M5NUlSZ2plalFMK2tDNG13KzR5UHhpQVhBPT0iXSwKCiAgICAiQG5leHQvc3djLWxpbnV4LXg2NC1nbnUiOiBbIkBuZXh0L3N3Yy1saW51eC14NjQtZ251QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLURPajE4Mm1QVjhHM1VrcmF5TG9SRU01WUVZSStEazV3djdPeDl4bDFmRmliQUVMRXNGRDBsRFBmSEllSUxsdXRNTWZkeWhsellQRUxHM3BldUthdXJ3PT0iXSwKCiAgICAiQG5leHQvc3djLWxpbnV4LXg2NC1tdXNsIjogWyJAbmV4dC9zd2MtbGludXgteDY0LW11c2xAMTYuMi42IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSEtRNVNQL1YvdWI3M1V2RjduL3plSmx4azJrTG10TDdXenJnNFdmbWtqbU5vczVvbkoydEt1N3laT1BkTDE4QTZTdmZuM21heDI5eW0rcnk3TmtLNGc9PSJdLAoKICAgICJAbmV4dC9zd2Mtd2luMzItYXJtNjQtbXN2YyI6IFsiQG5leHQvc3djLXdpbjMyLWFybTY0LW1zdmNAMTYuMi42IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1MWlhwVGxQeVM1djdIaFNtbnZzTEdQM2lJWWdZT0JuYzhyOEFybFQ1NXNHSFY4OWJSMkhsRGRCaldRK1BZNlNKTW1rOFR1VkdGdXhhbG5QM2svMER3Zz09Il0sCgogICAgIkBuZXh0L3N3Yy13aW4zMi14NjQtbXN2YyI6IFsiQG5leHQvc3djLXdpbjMyLXg2NC1tc3ZjQDE2LjIuNiIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLUYwKzRpMGg5SjZDNGVFM0VBUFdzb0NrN1VXL2Riek9qeXp4WTBxbkRVT1lGdTZGRm1kWjZsOTcvWGRWMy9OejNWWXlPN1VXanlFSlVYa0dxY29YZk1BPT0iXSwKCiAgICAiQG94Yy1wcm9qZWN0L3R5cGVzIjogWyJAb3hjLXByb2plY3QvdHlwZXNAMC4xMzAuMCIsICIiLCB7fSwgInNoYTUxMi1pYkQydXN4OUpSdTdmNXB1MnRNS01JNGNwQTROZ1hKUW9ZUlA0cFE3UHhtbjFsNmsvNTNxV3RRV1pheWhZeTNYNFFaa3Q5ME90K21KRWFlWG91aW82UT09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWFuZHJvaWQtYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLWFuZHJvaWQtYXJtNjRAMS4wLjEiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItZkpJM0kwcjNDM09qL3pkQkNwYUNtQlJaWWYwN3hwYXE0eUNmRERvU0ZtK2JlV056YklsMjZwdVc4UnJhVWR1Z29Kdy85NXplck5PbjZqYXNBaHpTbWc9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1kYXJ3aW4tYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLWRhcndpbi1hcm02NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLWNLbkFoV0VzVjdUUGNBLzVFQXRlRHA2S2NKWkJRMkcrQnFFN3pheU1NaTdrTXZ3UnNidjdXVDlhT25uMFdObDRTS0VJZjQzdmpTMzFpVVB1ODBuelhnPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NCI6IFsiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1ZS3JWd1FqSVJCUG8rNUcvdTAzd0dqYmR5NHE3cHl6Q2U5M0RLOVZKN3prVm1lZzhMSjdHYmdzaUhXZFI0eFNvZTRDQVhSRDdCY2pnYnRyNjRia1hOZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWZyZWVic2QteDY0IjogWyJAcm9sbGRvd24vYmluZGluZy1mcmVlYnNkLXg2NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItei9vQnNSRW80NlNzRnFCd1l0RmUwa3BKZUJpakFUNDhPL1dYTEk0c3VpQ0xCa3IwM1JUdFRKTUN6U2REZDJ6bmxoOFZKaXpMMDlYVmtRZ2s4SVpvbnc9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmQDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItaWs4cTdHTTExenh2WXhGYzJQZURjVDZUQnZoQ1FNYVV4ZnBoL001bDlzS3VUcy9TamczTCtCeXcwRjd3MFpWTEJabXgzMFArZ0cwRUN6ek4rTUZjbVE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1nbnUiOiBbIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LWFybTY0LWdudUAxLjAuMSIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItUW9TeDJFa3lycmRaNmtjeUU4c3RxWjYydDBZcmE4RnM1aWE5bE94SnJoNlRNUUpLN2dRS21zY2RUSGY3cE9YS1JFS3JWd090SmNRRzNxVlNmYzg2NkE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsQDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi11d053RnB3S2VOaVphd2ZBV0JnZzBWSXp0UFRWM2loaGgxdlYzMzRoOWl2bk5Mb3J4blFNVTZGejh3RzFaYjRRaDlMQzEvTWtjeVQzWWxEWEczUnNnZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXBwYzY0LWdudSI6IFsiQHJvbGxkb3duL2JpbmRpbmctbGludXgtcHBjNjQtZ251QDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi16WTFidWw3T1dyN0RGQmlKKyt3b2ZYdm5yOEI0NWNlM1FzUVVoS3JJaFhzeWdBaDdiVGt3eWVNMWJpMWEyZzVDL3lDL044VFp5R0RFb01mbS9sOW1wZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXMzOTB4LWdudSI6IFsiQHJvbGxkb3duL2JpbmRpbmctbGludXgtczM5MHgtZ251QDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJzMzkweCIgfSwgInNoYTUxMi0wZnJsc1QvZjRGdDZJN1NNRVNUS25GM2Nac2RpY1FuMWRDTWtGL2pUOXdETEUrZ0dvaVFmdjFubVQ5ZStzN3MvZmVrdnZ5NnRaTTJqSHZJMnRrYkpEUT09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1nbnUiOiBbIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1nbnVAMS4wLjEiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1YQUJWbUdwOVRnMFdzcFRWdndkdVRjNGZwcXk2Sm5BVXJTUWU2T3V5cUQvMDNuSTdyME85T1dVa01Jd0ZyaktBSXFvbHZxb0E0WnJKcHBnd0UwR3htdz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1tdXNsIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC14NjQtbXVzbEAxLjAuMSIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLWJWNGZ6c3d1elZjS0Q5MG8vVk02UXFLeG54bERxMGcyQklTRExOVm14cm5ocHYxRERieVBoQ0lqWWZ2ellMVitNdmtLS25RdDJRNkFPODZTRUJVTFVRPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctb3Blbmhhcm1vbnktYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLW9wZW5oYXJtb255LWFybTY0QDEuMC4xIiwgIiIsIHsgIm9zIjogIm5vbmUiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLS9NaDBaaHEzT1A3ZlZzMGtjUUhaUDZsWkV0aE1HVGFTZjhVQlFZU0ZFWkRXR1hYbEVDK25KNkVxZW5hSzJ0NExCWE1lM0ErSy9HMkJWWFhkdE9yNFBRPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctd2FzbTMyLXdhc2kiOiBbIkByb2xsZG93bi9iaW5kaW5nLXdhc20zMi13YXNpQDEuMC4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvY29yZSI6ICIxLjEwLjAiLCAiQGVtbmFwaS9ydW50aW1lIjogIjEuMTAuMCIsICJAbmFwaS1ycy93YXNtLXJ1bnRpbWUiOiAiXjEuMS40IiB9LCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItKzF4YzlYNDVsOHVmc0JBbTZHanZ4MnFEUklZOWxUVnQwY2dXTmNKKzFnZGhYdmtieGVQQTYweVJUd1NUdVhMMDlDTWh5Sm1qcFY3RTNOb3l4YnFGUVE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjIjogWyJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjQDEuMC4xIiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi0xRCtVcVpkZm51UitKeTFHZ01Kd2k4NWJENDBIMjF1Tm1PUFJXUWh3NG9SU3VvbFovQjVyaXhaNDVESzJLWE9UQ3ZtVkNlY2F1V2dFaGJ3OGJJN3RPdz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLXdpbjMyLXg2NC1tc3ZjIjogWyJAcm9sbGRvd24vYmluZGluZy13aW4zMi14NjQtbXN2Y0AxLjAuMSIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLUlOQXljYVd1aGxPSzN3azRtUkhHc2Rnd1lXbWQ5Y0NoZFBkRTlid1dteTZybjlWcVZOWU5GR2hPZFhyb2ZYVXh3SEluY1NpUE5iOHRObThrbkRWSWVRPT0iXSwKCiAgICAiQHJvbGxkb3duL3BsdWdpbnV0aWxzIjogWyJAcm9sbGRvd24vcGx1Z2ludXRpbHNAMS4wLjEiLCAiIiwge30sICJzaGE1MTItMmo5Ykd0NUpoOGhqK3ZQdGd6UHRsNzJqMHlSeEhBeXVtb282VE5mQWpzTEIwNFV0cFN2UGJQY0RjQk14ejduKzlDWUIwYzFHeFFGeFlSZzJqaW1xR3c9PSJdLAoKICAgICJAc3RhbmRhcmQtc2NoZW1hL3NwZWMiOiBbIkBzdGFuZGFyZC1zY2hlbWEvc3BlY0AxLjEuMCIsICIiLCB7fSwgInNoYTUxMi1sMmFGeTVqQUxobmlHNUhncXJENmpYTGkvclVXckt2cU4vcUp4NnlvSnNnS2hibFZkK2lxcVU0UkNYYXZtL2pQaXR5RG81VEN2S01ucGpLbk9yaXkwdz09Il0sCgogICAgIkBzd2MvaGVscGVycyI6IFsiQHN3Yy9oZWxwZXJzQDAuNS4xNSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi44LjAiIH0gfSwgInNoYTUxMi1KUTVUdU1pNDVPd2k0L0JJTUFKQm9TUW9PSnUxMm9Pay9nQURxbGNVTDlKRWRIQjh2eWpVU3N4cWVOWG5tWEhqWUtNaTJXY1l0ZXpHRUVocVVJL0UyZz09Il0sCgogICAgIkB0YWJieV9haS9oaWpyaS1jb252ZXJ0ZXIiOiBbIkB0YWJieV9haS9oaWpyaS1jb252ZXJ0ZXJAMS4wLjUiLCAiIiwge30sICJzaGE1MTItcjViQ2xLcmNJdXNEb28wNDlkU0w4Q2F3bkhSNm1SZER3aGxRdUlnWlJOdHk2OHEweDhrM0xmMUJ0UEFNeFJmL0dnbkhCbklPNHVqZDMrR1FkTFd6eFE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvbm9kZSI6IFsiQHRhaWx3aW5kY3NzL25vZGVANC4zLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvcmVtYXBwaW5nIjogIl4yLjMuNSIsICJlbmhhbmNlZC1yZXNvbHZlIjogIl41LjIxLjAiLCAiaml0aSI6ICJeMi42LjEiLCAibGlnaHRuaW5nY3NzIjogIjEuMzIuMCIsICJtYWdpYy1zdHJpbmciOiAiXjAuMzAuMjEiLCAic291cmNlLW1hcC1qcyI6ICJeMS4yLjEiLCAidGFpbHdpbmRjc3MiOiAiNC4zLjAiIH0gfSwgInNoYTUxMi1hRmI0Z1VoRk9nZGg5QVhvNEl6QkVPekJra0F4bTlWaWd3REpuTUlZdjNsY2ZYQ0pWZXNOZmJFYUJsNEJOZ1ZSeWlkOTJBbWR2aXF3QlVCUktTZVkzZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZSI6IFsiQHRhaWx3aW5kY3NzL294aWRlQDQuMy4wIiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQHRhaWx3aW5kY3NzL294aWRlLWFuZHJvaWQtYXJtNjQiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtZGFyd2luLXg2NCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtZnJlZWJzZC14NjQiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybS1nbnVlYWJpaGYiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybTY0LWdudSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtbXVzbCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LWdudSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LW11c2wiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLXdhc20zMi13YXNpIjogIjQuMy4wIiwgIkB0YWlsd2luZGNzcy9veGlkZS13aW4zMi1hcm02NC1tc3ZjIjogIjQuMy4wIiwgIkB0YWlsd2luZGNzcy9veGlkZS13aW4zMi14NjQtbXN2YyI6ICI0LjMuMCIgfSB9LCAic2hhNTEyLUY3SFpHQmVOOUkwL0F1dUpTNVB3Y0Q4eGF5eDVyaTVHaGpZVURCRVZZVWtleHlBL2dpd2JETmpSVnJ4U2V6RTNUMjUwT1UySy93cC9sdFd4M1VPZWZnPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWFuZHJvaWQtYXJtNjQiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1hbmRyb2lkLWFybTY0QDQuMy4wIiwgIiIsIHsgIm9zIjogImFuZHJvaWQiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVRKUGlxNjd0S2xMdU9iUDZSa3d2VkdEb3hDTUJWdERnS2tMZmEvdXlqNy9GeXh2UXdIUytVT25WclhYZ2JFc2ZVYU1naVZ2QzRLYkpuUnIyNmhvNE5nPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NCI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NEA0LjMuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLW9NTi9XWlJiK1NPMzdCbVVFbEVnZUVXdVU4RS9IWFJraU9EeEp4TGUxVVRIVlhMcmRWU2dmYUpWN3BTbGhSR01TT2lYTHV4VElqZnNGM3dZdno4Y2dRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi14NjQiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1kYXJ3aW4teDY0QDQuMy4wIiwgIiIsIHsgIm9zIjogImRhcndpbiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLU42Q1VtdTRhNmJLVkFEZnc3N3AraXc2WWQ5UTNPQmhlMHZlYURYK1FhemZ1VllsUXNIZkRneEJyc2pRL0lXK3p5d0w4bVRyTmQwU2RKVC96Z3R2TWRBPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWZyZWVic2QteDY0IjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtZnJlZWJzZC14NjRANC4zLjAiLCAiIiwgeyAib3MiOiAiZnJlZWJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLXpETDVoQmtRZEg1QzZNcHFiSzNnUUFnUDgwdHNNd1NJMjZ2ak96akp0TkNNVW8wbEZnT0l0ekhLQkl1cE9aTlF4dDNvdVBIN1JQaHZOaGlUZkNlNUNRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybS1nbnVlYWJpaGYiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC1hcm0tZ251ZWFiaWhmQDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItUjA2SGROaTdBN09Fb01zZjZkNHRqWjcxUkNXblpRUEhqMm1ub3RTRlVSak5MZEJDK2NJZ1hRN2w4MUNxZW9pUWZ0amY2T09ibHhYTUluTWdOMlZ6TUE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtZ251IjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtZ251QDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1xVEpIRUxYOGpldGpoUlFIQ0xpbGtWTG15YnB6TlFBdGFJL2dhb1ZvaWRuL3VmYk5EYkFvOEtsSzJKK3lQb2M4d1F4dkR4Q21oLzVscjhuQzErbFRiZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC1hcm02NC1tdXNsIjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtbXVzbEA0LjMuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItWjZzdWtpUXNuZ25XTytsMzlYNHBQYmlXVDgxSUMrUExLRitQSHhJbHlaYkdOYjlNT0RmWWxYRVZsRnZlajVCT1pJbldYMDFrVnl6ZUx2SHNYaGZjelE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LWdudSI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LXg2NC1nbnVANC4zLjAiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1EUk5kUVJwU0d6UkdmQVJWdVZreHZNOFExMm5oMTlsNEJGL0c3ekdBMW9lKzl3Y0M2c2FGQkhUSVNycEljS3poaVh0U3JsU3JsdUNmdk11bGVkb0NUUT09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC14NjQtbXVzbCI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LXg2NC1tdXNsQDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItWjBJQURiRG84Ymg2STdoMklRTXg2MDFBZFhCTGZGcEVkVW90ZnQ4NmV2ZC84WlBmbFplOUNPUE84UTF2dytwZkxXSVVvOXpOL0pHWnZ3dUFKcWR1cWc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kiOiBbIkB0YWlsd2luZGNzcy9veGlkZS13YXNtMzItd2FzaUA0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAZW1uYXBpL2NvcmUiOiAiXjEuMTAuMCIsICJAZW1uYXBpL3J1bnRpbWUiOiAiXjEuMTAuMCIsICJAZW1uYXBpL3dhc2ktdGhyZWFkcyI6ICJeMS4yLjEiLCAiQG5hcGktcnMvd2FzbS1ydW50aW1lIjogIl4xLjEuNCIsICJAdHlieXMvd2FzbS11dGlsIjogIl4wLjEwLjEiLCAidHNsaWIiOiAiXjIuOC4xIiB9LCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItSE5aR09VeEVtRWxrc1lSN1M2c0M1alRlTkdwb2JBc3k5dTdHdTBBc2tKOC8yMEZSOUdxZWJVeUIrSEJjVS9heDZCSHVpdUppK09kYTRCK1lYNkgxeUE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2luMzItYXJtNjQtbXN2YyI6IFsiQHRhaWx3aW5kY3NzL294aWRlLXdpbjMyLWFybTY0LW1zdmNANC4zLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVBlK1JQVlRpMVQrcXltdXVScGNkdndTVlpqbmxsL2Y3bjhnQnhNTWgzeExUY3RNREtxcGRmR2ltYk15aW9xdExoVVlaeGRKOXdHTmhWN01LSHZnWnNRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLXdpbjMyLXg2NC1tc3ZjIjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtd2luMzIteDY0LW1zdmNANC4zLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1NdnJmMmtYVy95ZVcvT1RlelpsQ0dPaXJYUmNVdUxJQngvNVkxMkJhUE03d0pvcnlHNmRmUy9OSkw4YUJQcXRURXgvVm00VDR2S3pGVWNLRFQrVEtVQT09Il0sCgogICAgIkB0YWlsd2luZGNzcy9wb3N0Y3NzIjogWyJAdGFpbHdpbmRjc3MvcG9zdGNzc0A0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYWxsb2MvcXVpY2stbHJ1IjogIl41LjIuMCIsICJAdGFpbHdpbmRjc3Mvbm9kZSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUiOiAiNC4zLjAiLCAicG9zdGNzcyI6ICJeOC41LjEwIiwgInRhaWx3aW5kY3NzIjogIjQuMy4wIiB9IH0sICJzaGE1MTItSm0wNVRqeCs5eUNMR3Y1cXcxYys4NFBzZHM4TW55ckVRWUNCK0ZGazJsZ0dpVWpsUnFkeGtlNG1WVHVZcmoyeG5WWnFLaW0yQXByNXlTdVFSWUF3L3c9PSJdLAoKICAgICJAdHlieXMvd2FzbS11dGlsIjogWyJAdHlieXMvd2FzbS11dGlsQDAuMTAuMiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi40LjAiIH0gfSwgInNoYTUxMi1Sb0J2SjJYMHd1S2xXRklqcndmZkd3MUlxWkhLUXF6SWNoS2FhZFpaZm5OcHNBWXAybU0waDM2SnRQQ2pOREFIR2dZZXovMTV1TUJwZkd3Y2hoaU1nZz09Il0sCgogICAgIkB0eXBlcy9jaGFpIjogWyJAdHlwZXMvY2hhaUA1LjIuMyIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAdHlwZXMvZGVlcC1lcWwiOiAiKiIsICJhc3NlcnRpb24tZXJyb3IiOiAiXjIuMC4xIiB9IH0sICJzaGE1MTItTXc1NThvZUE5ZkZidjY1L3k0bUh0WERzOWJQbkZNWkFML2p4ZFBGVXBPSEhJWFg5MW1jZ0VIYlM1TGFocitwd1pGUjhBN0dRbGVSV2VJNmNHRkMyVUE9PSJdLAoKICAgICJAdHlwZXMvZGVlcC1lcWwiOiBbIkB0eXBlcy9kZWVwLWVxbEA0LjAuMiIsICIiLCB7fSwgInNoYTUxMi1jOWg5ZFZWTWlnTVBjNGJ3VHZDNWR4cXRxSlp3UVBlUHNXalBscFNPbm9qYm9yNnBHcWRrNTQxbGZBN0FxRlFyNXBCMUJSZHEwanVZOWRiODFCd3lGdz09Il0sCgogICAgIkB0eXBlcy9lc3RyZWUiOiBbIkB0eXBlcy9lc3RyZWVAMS4wLjkiLCAiIiwge30sICJzaGE1MTItR2hkUGd5MWVsNC9JbVAwNVgwNVV3NGN3Mi9NOTNCQ1VtbkV2V1pOU3RsQ3pFS01FNEZraytZcG9BNU9pSE5RbW9TN0NhZmI4WGEzUHlhOG0xUXJ6ZWc9PSJdLAoKICAgICJAdHlwZXMvbm9kZSI6IFsiQHR5cGVzL25vZGVAMjIuMTkuMTkiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidW5kaWNpLXR5cGVzIjogIn42LjIxLjAiIH0gfSwgInNoYTUxMi1keWgveE8yRmg1YllyZldhYXFHclJRUUdrTmRtWXc2QW1hQVV2WWVVTU5UV1F0dmI3OTZpa0xkbVRjaFJtT2xPaUlKMVREWGZXZ1Z4MVFrVWxRNkhldz09Il0sCgogICAgIkB0eXBlcy9yZWFjdCI6IFsiQHR5cGVzL3JlYWN0QDE5LjIuMTUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiY3NzdHlwZSI6ICJeMy4yLjIiIH0gfSwgInNoYTUxMi1lUndjR05IdmUrRThxdEVRU1NSbDZ1cmgrckZvcDR2OGdtNk84ckd2MjVDb2RidkZkTGpBMXZWUTFLa2lGRTB3MFVQT25iOHREaUZLTDVscDBydFk1UT09Il0sCgogICAgIkB0eXBlcy9yZWFjdC1kb20iOiBbIkB0eXBlcy9yZWFjdC1kb21AMTkuMi4zIiwgIiIsIHsgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJAdHlwZXMvcmVhY3QiOiAiXjE5LjIuMCIgfSB9LCAic2hhNTEyLWpwMkwvZVk2Zm4rS2dWVlFBT3FZSXRiRjBWWS9ZQXBlNU16MkYwYXlrU084Z3gzMWJZQ1p5dlNlWXhDSEt2ekhHNWVaamMrenlhUzVCckJXeWEyK2tRPT0iXSwKCiAgICAiQHZpdGVzdC9leHBlY3QiOiBbIkB2aXRlc3QvZXhwZWN0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBzdGFuZGFyZC1zY2hlbWEvc3BlYyI6ICJeMS4xLjAiLCAiQHR5cGVzL2NoYWkiOiAiXjUuMi4yIiwgIkB2aXRlc3Qvc3B5IjogIjQuMS42IiwgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAiY2hhaSI6ICJeNi4yLjIiLCAidGlueXJhaW5ib3ciOiAiXjMuMS4wIiB9IH0sICJzaGE1MTItN0VIRHF1UHRoQUxTVjBqaGhqZ0VXOEZYYXZpTXg3clNxdThXNm9xQ29BdU9oS292ODE0UDk5UURWMXB4TUEzUVB2MjFZdWR2Sm5nSWhqck5JNG9wTGc9PSJdLAoKICAgICJAdml0ZXN0L21vY2tlciI6IFsiQHZpdGVzdC9tb2NrZXJANC4xLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHZpdGVzdC9zcHkiOiAiNC4xLjYiLCAiZXN0cmVlLXdhbGtlciI6ICJeMy4wLjMiLCAibWFnaWMtc3RyaW5nIjogIl4wLjMwLjIxIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIm1zdyI6ICJeMi40LjkiLCAidml0ZSI6ICJeNi4wLjAgfHwgXjcuMC4wIHx8IF44LjAuMCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIm1zdyIsICJ2aXRlIl0gfSwgInNoYTUxMi1NQ0ZjNjNjek1qRUluT2xjWTJjcFFDdkNOK0tnYkFuKzYweHU5Y01nUDRzS2FMQzVKTkFLdzdKSDhRZEFub0FDODhoVzFJaVNOWitHZ1ZYbE4xVWNNUT09Il0sCgogICAgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6IFsiQHZpdGVzdC9wcmV0dHktZm9ybWF0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRpbnlyYWluYm93IjogIl4zLjEuMCIgfSB9LCAic2hhNTEyLWg1U3hEL0l6TmhaWW5yU1pSc1VaUUlDK3ZEMEdZOGNVdnEwaXdzbWtGS2l4UkNLTExXcUNYYS9GSVE0UzFSK3NJK1BHb29qa0hzZE5yYlppTTlRcGd3PT0iXSwKCiAgICAiQHZpdGVzdC9ydW5uZXIiOiBbIkB2aXRlc3QvcnVubmVyQDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAicGF0aGUiOiAiXjIuMC4zIiB9IH0sICJzaGE1MTItbk9QQ21uMit5RDBaTm1LZHNYR3YvVXhNTVdiTXVLZUQ2R3lZbmNOd2RrWUR4cFF2clBTS1lqMnJXdURqQzJZNGI2dzZoamlwNWRCS0Z6RVV1WmUzdkE9PSJdLAoKICAgICJAdml0ZXN0L3NuYXBzaG90IjogWyJAdml0ZXN0L3NuYXBzaG90QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6ICI0LjEuNiIsICJAdml0ZXN0L3V0aWxzIjogIjQuMS42IiwgIm1hZ2ljLXN0cmluZyI6ICJeMC4zMC4yMSIsICJwYXRoZSI6ICJeMi4wLjMiIH0gfSwgInNoYTUxMi1ZaHNkRTZ4QVZmVERtemp4TDJaRFV2amorWnNneU9LZStUZFF6cWtENzJ3SU9tSGthOE51R1E2TnBUTlp2OUQyWjYzZmJ3V0tKUGVWcEV3NEVRZ1l4dz09Il0sCgogICAgIkB2aXRlc3Qvc3B5IjogWyJAdml0ZXN0L3NweUA0LjEuNiIsICIiLCB7fSwgInNoYTUxMi1KRkt4TXg2dWRod0toL0xkbzI3MGUxN1FYNzEwdmd1bk1rdVBBdlhqSFN2QzZvcUxXQUhoVmhqZy9JNzFxMHUwQ0JTRXJJT0RWMUtqdjBGUU5TV2pkZz09Il0sCgogICAgIkB2aXRlc3QvdXRpbHMiOiBbIkB2aXRlc3QvdXRpbHNANC4xLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHZpdGVzdC9wcmV0dHktZm9ybWF0IjogIjQuMS42IiwgImNvbnZlcnQtc291cmNlLW1hcCI6ICJeMi4wLjAiLCAidGlueXJhaW5ib3ciOiAiXjMuMS4wIiB9IH0sICJzaGE1MTItRnhJWStVODFSM0xHS0N4YUhIRlJRNStnNi9pUmdHTG1lSFdkcDJBbWo0bGpRUnJFSVdIbVp5RGZEWUJSWmxweXFBN3FLeHRTOUREMWRoazhSblJJVlE9PSJdLAoKICAgICJhY29ybiI6IFsiYWNvcm5AOC4xNi4wIiwgIiIsIHsgImJpbiI6IHsgImFjb3JuIjogImJpbi9hY29ybiIgfSB9LCAic2hhNTEyLVVWSnlFOU10dE9zQlFJREt3MXNrYjluQXdRdVI1d3VHRDMrODJLNkpnSmxtL1krS0k5Mm9Oc01OR1pDWWREc1Z0UkhTYWswcGNWNURubzUrNGpoOXN3PT0iXSwKCiAgICAiYW5zaS1yZWdleCI6IFsiYW5zaS1yZWdleEA1LjAuMSIsICIiLCB7fSwgInNoYTUxMi1xdUpRWGxUU1VHTDJMSDlTVVhvOFZ3c1k0c29hbmhnbzZMTlNtODRFMUxCY0U4czNPMHdwZGlSenlSOXovWlpKTWxNV3YzN3FPT2I5cGRKbE1VRUtGUT09Il0sCgogICAgImFuc2ktc3R5bGVzIjogWyJhbnNpLXN0eWxlc0A0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjb2xvci1jb252ZXJ0IjogIl4yLjAuMSIgfSB9LCAic2hhNTEyLXpiQjlyQ0pBVDFyYmppVkRiMmhxS0ZITllMeGd0azhOVVJ4WjNJWndEM0Y2TnR4YlhaUUNublNpMUxreCtJRG9oZFBsRnAyMjJ3VkFMSWhlWkpRU0VnPT0iXSwKCiAgICAiYXNzZXJ0aW9uLWVycm9yIjogWyJhc3NlcnRpb24tZXJyb3JAMi4wLjEiLCAiIiwge30sICJzaGE1MTItSXppOFJRY2ZmcUNlTlZnRmlnS2xpMXNza2xJYnBIbkNZYzZBa25YR1lvQjZnckpxeWVieTdqdjEySlVRZ21UQW5JRG5iY2sxdXhrc1Q0ZHpOM1BXQkE9PSJdLAoKICAgICJiYXNlbGluZS1icm93c2VyLW1hcHBpbmciOiBbImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZ0AyLjEwLjMxIiwgIiIsIHsgImJpbiI6IHsgImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZyI6ICJkaXN0L2NsaS5janMiIH0gfSwgInNoYTUxMi1NdWpZTzNlUDcydXZtU0UwaTR3bHRzb2RSZklwWkFUUDNqdnpSTlJHR3hneklkN2FWb2NWSkpWM25mMDFxbnp6S0ZHeFFWQzlicFd4bDVjanhUci83UT09Il0sCgogICAgImJ1ZmZlci1mcm9tIjogWyJidWZmZXItZnJvbUAxLjEuMiIsICIiLCB7fSwgInNoYTUxMi1FK1hRQ1J3U2JhYWlDaHR2Nms2RHdnYytieCtCczZ2dUtKSEhsNWtveC9CYUtiaGlYenFRT3dLNGNPMjJ5RWxHcDJPQ21qd1ZoVDNIbXhneVBHbkpmUT09Il0sCgogICAgImNhbml1c2UtbGl0ZSI6IFsiY2FuaXVzZS1saXRlQDEuMC4zMDAwMTc5MyIsICIiLCB7fSwgInNoYTUxMi1pd1NzWVdhQ09vaDI2Y1Y4TndOUlZpSGxyZlV2WXNIRGZSVmNidG13MEtnNlBKSVpaWHdNa2oxNDQyRllMQkdrZVVmMWp1QXNVM0RUZnhXNTc5bXJQQT09Il0sCgogICAgImNoYWkiOiBbImNoYWlANi4yLjIiLCAiIiwge30sICJzaGE1MTItTlVQUmx1T2ZPaVRLQkt2V1B0U0Q0UGhGdldDcU9pMEJHU3ROV3M1N1g5anM3WEdUcHJTbUZvejVGMHRXaFI0V1BqTmVSOWpYcWRDNy9VcFNKVG5sUmc9PSJdLAoKICAgICJjaGFsayI6IFsiY2hhbGtANC4xLjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiYW5zaS1zdHlsZXMiOiAiXjQuMS4wIiwgInN1cHBvcnRzLWNvbG9yIjogIl43LjEuMCIgfSB9LCAic2hhNTEyLW9LbmJoRnlSSVhwVXVlejhpQk1teUVhNG5iajRJT1F5dWhjL3d5OWtZNy9XVlBjd0lPOVZBNjY4UHU4UmtPNyswRzc2U0xST2V5dzlDcFEwNjFpNG1BPT0iXSwKCiAgICAiY2xpZW50LW9ubHkiOiBbImNsaWVudC1vbmx5QDAuMC4xIiwgIiIsIHt9LCAic2hhNTEyLUlWM091MGpTTXpacmQzcFo0OG5Ma1Q5REE3QWcxcG5QemFpUWhwVzdjM1JiY3FxenZ6elZ1K0w4Z2ZxTXAvOElNMk1RdFNpcWFDeHJyY2Z1OEk4ck1BPT0iXSwKCiAgICAiY2xpdWkiOiBbImNsaXVpQDguMC4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInN0cmluZy13aWR0aCI6ICJeNC4yLjAiLCAic3RyaXAtYW5zaSI6ICJeNi4wLjEiLCAid3JhcC1hbnNpIjogIl43LjAuMCIgfSB9LCAic2hhNTEyLUJTZU5ueXVzNzVDNC8vTlE5Z1F0MS9jc1RYeW8vOFNiK2FmTEFrekFwdEZ1TXNvZDlIRm9rR051ZFpwaS9vUVY3M2huVksrc1IrNVBWUk1kK0RyN1lRPT0iXSwKCiAgICAiY2xzeCI6IFsiY2xzeEAyLjEuMSIsICIiLCB7fSwgInNoYTUxMi1lWW0wUVdCdFVyQldaV0cwZDM4Nk9HQXcxNlo5OTVQaU9WbzJCN2JqV1NiSGVkR2w1ZTBaV2FxNjVrT0dnVVNOZXNFSURrQjlJU2JUZy9KSzlkaENaQT09Il0sCgogICAgImNvbG9yLWNvbnZlcnQiOiBbImNvbG9yLWNvbnZlcnRAMi4wLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiY29sb3ItbmFtZSI6ICJ+MS4xLjQiIH0gfSwgInNoYTUxMi1SUkVDUHNqN2l1L3hiNW9LWWNzRkhTcHBGTm5zai81Mk9WVFJLYjR6UDVvblh3VkYzelZtbVRvTmNPZkdDK0NSRHBmSy9VNTg0Zk1nMzhaSENhRWxLUT09Il0sCgogICAgImNvbG9yLW5hbWUiOiBbImNvbG9yLW5hbWVAMS4xLjQiLCAiIiwge30sICJzaGE1MTItZE95KzNBdVczYTJ3TmJaSEl1TVpwVGNnakd1TFUvdUJML3ViY1pGOU9YYkRvOGZmNE84eVZwNUJmMGVmUzh1RW9ZbzVxNEZ4N2RZOU9nUUdYZ0FzUUE9PSJdLAoKICAgICJjb21tYW5kZXIiOiBbImNvbW1hbmRlckAyLjIwLjMiLCAiIiwge30sICJzaGE1MTItR3BWa21NOHZGMnZRVWtqMkx2Wm1EMzVKeGVKT0xDd0o5Y1VrdWd5azJudWhidjMrbUp2cExZWXQrMCtVU014RStvaitleS9sSkVuaFp3NzV4L09NY1E9PSJdLAoKICAgICJjb25jdXJyZW50bHkiOiBbImNvbmN1cnJlbnRseUA5LjIuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjaGFsayI6ICI0LjEuMiIsICJyeGpzIjogIjcuOC4yIiwgInNoZWxsLXF1b3RlIjogIjEuOC4zIiwgInN1cHBvcnRzLWNvbG9yIjogIjguMS4xIiwgInRyZWUta2lsbCI6ICIxLjIuMiIsICJ5YXJncyI6ICIxNy43LjIiIH0sICJiaW4iOiB7ICJjb25jIjogImRpc3QvYmluL2NvbmN1cnJlbnRseS5qcyIsICJjb25jdXJyZW50bHkiOiAiZGlzdC9iaW4vY29uY3VycmVudGx5LmpzIiB9IH0sICJzaGE1MTItZnNmck8wTXhWNjRabm95OC9sMXZWSWpqSGEyOVNaeXlxUGdRQndoaURjYVc4d0pjMlczWFdWT0d4NE0zb0pCbnYvemRVWklJcDFnRGVTOThHelA4Tmc9PSJdLAoKICAgICJjb252ZXJ0LXNvdXJjZS1tYXAiOiBbImNvbnZlcnQtc291cmNlLW1hcEAyLjAuMCIsICIiLCB7fSwgInNoYTUxMi1LdnA0NTlIclYyRkVKMUNBc2kxS3UrTVkza2FzSDE5VEZ5a1R6MnhXbU1lcTZiazJOVTNYWHZmSitRNjFtMHhrdFd3dCsxSFNZZjNKWnNUbXMzYVJKZz09Il0sCgogICAgImNzc3R5cGUiOiBbImNzc3R5cGVAMy4yLjMiLCAiIiwge30sICJzaGE1MTItejFIR0tjWXkyeEE4QUdRZndybjBQQXkrUEI3WC9HU2ozVVZKVzlxS3luNDN4V2ErZ2w1blhtVTRxcUxNUnpXVkxGQzhLdXNVWDhULzBrQ2lPWXBBSVE9PSJdLAoKICAgICJkYXRlLWZucyI6IFsiZGF0ZS1mbnNANC4yLjEiLCAiIiwge30sICJzaGE1MTItMzdSaFNkeGFHMXN1ZW42VkRDemE2ck5yUWZvb3lRaDU3SEZWUHdRR0VxMlFXbGlWTHpQUVo4T2EwMTd3ZU91K0haQ256STdOM1BmL3d5b0JLZkVxckE9PSJdLAoKICAgICJkYXRlLWZucy1qYWxhbGkiOiBbImRhdGUtZm5zLWphbGFsaUA0LjEuMC0wIiwgIiIsIHt9LCAic2hhNTEyLWhUSVAveit0K3FLd0JEY21tc25taldUZHV4Q2crNUtmZHFXUXZiMlgvOEM5K2tuWVk2ZXBOL3BmeGREdXlWbFNWZUZ6MHNNNWVFZndJVVE3MFU0Y2tnPT0iXSwKCiAgICAiZGV0ZWN0LWxpYmMiOiBbImRldGVjdC1saWJjQDIuMS4yIiwgIiIsIHt9LCAic2hhNTEyLUJ0ajJCT09PODNvM1d5SDU5ZThNZ1hzeEVRVmNhcmtVT3BFWXJ1YkIwdXJ3bk4xMHlRMzY0cnNpQnlVMTFuWmxxV1labTA1aS9vZjdpbzRtemloQnRRPT0iXSwKCiAgICAiZW1vamktcmVnZXgiOiBbImVtb2ppLXJlZ2V4QDguMC4wIiwgIiIsIHt9LCAic2hhNTEyLU1Tall6Y1dOT0EwZXdBSHB6ME14cFlGdndnNnlqeTFORzN4dGVvcXo2NDRWQ28vUlBnbnIxL0dHdCtpYzNpSlR6UThFdTNUZE0xNFNhd25WVW1HRTZBPT0iXSwKCiAgICAiZW5oYW5jZWQtcmVzb2x2ZSI6IFsiZW5oYW5jZWQtcmVzb2x2ZUA1LjIxLjUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZ3JhY2VmdWwtZnMiOiAiXjQuMi40IiwgInRhcGFibGUiOiAiXjIuMy4zIiB9IH0sICJzaGE1MTItbUxDTmJyUWxpMTFLMXlTVW11TnQ0WlVCM09wR0lEcTRxMnZUQlRmNWNMMmxwc1JqSTlRS3FTRDBuZGpXOEZ5dmNXL0pqNDZnTWU5c3l5SEFzdk1hL0E9PSJdLAoKICAgICJlcy1tb2R1bGUtbGV4ZXIiOiBbImVzLW1vZHVsZS1sZXhlckAyLjEuMCIsICIiLCB7fSwgInNoYTUxMi1uMjd6VFlNall1MWFqNE1qQ1d6U1A3RzlyNzV1dHNhb2M4bTYxd2VLK1c4Sk1CR0dReWJkNDNHc3RDWFozV05tU0Z0R1Q5d2k1OXFRVFc2bWhUUjVMUT09Il0sCgogICAgImVzYnVpbGQiOiBbImVzYnVpbGRAMC4yNS40IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGVzYnVpbGQvYWl4LXBwYzY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9hbmRyb2lkLWFybSI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvYW5kcm9pZC1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvYW5kcm9pZC14NjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2Rhcndpbi1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZGFyd2luLXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZnJlZWJzZC1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZnJlZWJzZC14NjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWFybSI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtYXJtNjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWlhMzIiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWxvb25nNjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LW1pcHM2NGVsIjogIjAuMjUuNCIsICJAZXNidWlsZC9saW51eC1wcGM2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtcmlzY3Y2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtczM5MHgiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbmV0YnNkLWFybTY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9uZXRic2QteDY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9vcGVuYnNkLWFybTY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9vcGVuYnNkLXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvc3Vub3MteDY0IjogIjAuMjUuNCIsICJAZXNidWlsZC93aW4zMi1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvd2luMzItaWEzMiI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvd2luMzIteDY0IjogIjAuMjUuNCIgfSwgImJpbiI6IHsgImVzYnVpbGQiOiAiYmluL2VzYnVpbGQiIH0gfSwgInNoYTUxMi04cGdqTFVjVWpjZ0RnKzJRNE5ZWG5QYm8vdm5jQVk0VW15YUNtMGpaZXZFUnFDSFpJYVd3ZEpIa2Y4WFF0dTRBeFNLQ2R2clViVDBYVXIxSWRaekk4UT09Il0sCgogICAgImVzY2FsYWRlIjogWyJlc2NhbGFkZUAzLjIuMCIsICIiLCB7fSwgInNoYTUxMi1XVWoycWx4YVF0TzRnNlBxNWMyOUdUY1dHRHlkOGl0TDh6VGxpcGdFQ3ozSmVzQWlpT0tvdGQ4SlU2b3RCM1BBQ2dHNnhrSlV5Vmhib01TK2JqZS9qQT09Il0sCgogICAgImVzdHJlZS13YWxrZXIiOiBbImVzdHJlZS13YWxrZXJAMy4wLjMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL2VzdHJlZSI6ICJeMS4wLjAiIH0gfSwgInNoYTUxMi03UlVLZlhnU01Na3p0Nlp1WG1xYXBPdXJMR1BQZmdqNmw5dVJaN2xSR29sdmsweTJ5b2NjMzVMZGN4S0M1UFFaZG4yRE1xaW9BUTJOb1djclRLbW02Zz09Il0sCgogICAgImV4cGVjdC10eXBlIjogWyJleHBlY3QtdHlwZUAxLjMuMCIsICIiLCB7fSwgInNoYTUxMi1rbnZ5ZWF1WWhxak9ZdlE2Nk16blNNczgzd21IckN5Y05FTjZBbysyQWVZRWZ4VUlrdWlWeGRFYTFxbEdFUEsrV2UzbjBUSGlEY2lZU3NDY2dXL0RvQT09Il0sCgogICAgImZkaXIiOiBbImZkaXJANi41LjAiLCAiIiwgeyAicGVlckRlcGVuZGVuY2llcyI6IHsgInBpY29tYXRjaCI6ICJeMyB8fCBeNCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbInBpY29tYXRjaCJdIH0sICJzaGE1MTItdEliWXRaYnVjT3MwQlJHcVBKa3NoSlVZZEwrU0RIN2RWTThnankrRVJwM1dBVWpMRUZKRSswMmthbnlIdHdqV09ud3JLWUJpd0FtTTBwNGtMSkFuWGc9PSJdLAoKICAgICJmc2V2ZW50cyI6IFsiZnNldmVudHNAMi4zLjMiLCAiIiwgeyAib3MiOiAiZGFyd2luIiB9LCAic2hhNTEyLTV4b0RmWCtmTDdmYUFUbmFnbVdQcGJGdHdoL1I3N1dtTU1xcUhHUzY1QzN2dkIwWUhyZ0YrQjFZbVozNDQxdE1qNW42M2swMjEyWE5vSnd6bGhmZlF3PT0iXSwKCiAgICAiZ2V0LWNhbGxlci1maWxlIjogWyJnZXQtY2FsbGVyLWZpbGVAMi4wLjUiLCAiIiwge30sICJzaGE1MTItRHlGUDNCTS8zWUhUUU9DVUwvdzBPWkhSMGxwS2VHcnhvdGNIV2NxTkVkbmx0cUZ3WFZmaEVCUTk0ZUlvMzRBZlFwbzByR2tpNGN5SWlmdFkwNmgyRmc9PSJdLAoKICAgICJncmFjZWZ1bC1mcyI6IFsiZ3JhY2VmdWwtZnNANC4yLjExIiwgIiIsIHt9LCAic2hhNTEyLVJiSjUvam1GY05OQ2NEVjVvOWVUbkJMSi9Ic3pXVjBQNzNiYytGZjRuUy9ySmorWWFTNklHeWlPTDBWb0JZWCtsMVdybDNrNjNoL0tySCtuaEowWHZRPT0iXSwKCiAgICAiaGFzLWZsYWciOiBbImhhcy1mbGFnQDQuMC4wIiwgIiIsIHt9LCAic2hhNTEyLUV5a0pUL1ExS2pUV2N0cHBnSUFnZlNPMHRLVnVaVWpoZ01yMTdrcVR1bU1sNkFmdjNFSVNsZVU3cVpVem9YREZUQUhUREM0Tk9vRy9aeFUzRXZsTVBRPT0iXSwKCiAgICAiaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQiOiBbImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50QDMuMC4wIiwgIiIsIHt9LCAic2hhNTEyLXp5bW01K3Urc0NzU1d5RDlxTmFlalYzREZ2aENLY2xLZGl6WWFKVXVIQTgzUkxqYjduU3VHbmRkQ0hHdjBoaytLWTdCTUFsc1dlSzRVZWc2RVY2WFFnPT0iXSwKCiAgICAiaml0aSI6IFsiaml0aUAyLjcuMCIsICIiLCB7ICJiaW4iOiB7ICJqaXRpIjogImxpYi9qaXRpLWNsaS5tanMiIH0gfSwgInNoYTUxMi1BQy83Sm9mSnZaR3JybmVXTmFFbkplT0xVeCtKbEd0N3ROYTB3WmlSUFQ0TVkxd21mS2p0Mis2TzJwMnV6Mitza2xsOE9aWm1KTU5xZWtlN2tLYk5nUT09Il0sCgogICAgImxpYnBob25lbnVtYmVyLWpzIjogWyJsaWJwaG9uZW51bWJlci1qc0AxLjEyLjQxIiwgIiIsIHt9LCAic2hhNTEyLWxzbU1tR1hCeFhJSy9WTUxFajBrTDZNdFVzMWtCR2oxblRDemk2emdRb0cxREV3cXd0MkRReUh4Y0x5a2NlSXhBbmZFM2h5YTdOdUloNlBwQzZTM2ZBPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzIjogWyJsaWdodG5pbmdjc3NAMS4zMi4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImRldGVjdC1saWJjIjogIl4yLjAuMyIgfSwgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAibGlnaHRuaW5nY3NzLWFuZHJvaWQtYXJtNjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1kYXJ3aW4tYXJtNjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1kYXJ3aW4teDY0IjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtZnJlZWJzZC14NjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1saW51eC1hcm0tZ251ZWFiaWhmIjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251IjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtbXVzbCI6ICIxLjMyLjAiLCAibGlnaHRuaW5nY3NzLWxpbnV4LXg2NC1nbnUiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtbXVzbCI6ICIxLjMyLjAiLCAibGlnaHRuaW5nY3NzLXdpbjMyLWFybTY0LW1zdmMiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy13aW4zMi14NjQtbXN2YyI6ICIxLjMyLjAiIH0gfSwgInNoYTUxMi1OWFlCemluTnJibGZyYVBHeXJiUG9EMTlDMWg5bGZJLzFtemdXWXZYVVRlNDE0R3ovWDFGRDJYQlpTWk03clJUck1BOEpMM090QWFHaWZySUtoUTV5UT09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1hbmRyb2lkLWFybTY0IjogWyJsaWdodG5pbmdjc3MtYW5kcm9pZC1hcm02NEAxLjMyLjAiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItWUs3L0NsVHQ0a0FLMHZvNnczWCtQbm0wRDJjZjJ2UEhiaE9YZG9OdGkxR2EwYWwxUDRUQlpod2pBVHZqTndMRUJDbkt2akpjMmpRZ0hYSDBORXdsQWc9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtZGFyd2luLWFybTY0IjogWyJsaWdodG5pbmdjc3MtZGFyd2luLWFybTY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVJ6ZUc5SnU1YmFnMkJ2MS9sd2xWSnZCRTNxNlR0WHNrZFpMTEN5Zmc1cHQrSEx6OUJxbElDTzdMWk03VkhOVFRuLzVQUmhIRkJTams1bGM0Y21zY1BRPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzLWRhcndpbi14NjQiOiBbImxpZ2h0bmluZ2Nzcy1kYXJ3aW4teDY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1VK1FzQnAybS9zMndxcFVZVC82d25sYWdkWmJ0WmRuZFNtdXQvTkpxbENjTUxUV3A1bXVDcklEK0s1VUo2anFEMkJGc2hlakNZWG5pUERiTmg3M1Y4dz09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1mcmVlYnNkLXg2NCI6IFsibGlnaHRuaW5nY3NzLWZyZWVic2QteDY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSkNUaWdlZEVrc1prM3RIVFR0aG5NZFZmR2Y2MUZreThKaTJFNFlqVVRFUVgxNHhpeS9sVHpYbnUxdndpWmUzYlllMHErU3BzU0gvQ1RlRFhLNldIaWc9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtLWdudWVhYmloZiI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LWFybS1nbnVlYWJpaGZAMS4zMi4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTIteDZybm5wUmEyR0wwelFPa3Q2cnRzM1lEUHpkdUxwV3Z3QUY2RU1oWEZWWlhENHRQckJrRUZxekdvd3pDc0lXc1BqcVNLK3R5TkVPRFVCWGVlVkhTa3c9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251IjogWyJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItMG5uTXlveU9MUkpYZmJNT2lsYVNSY0xIM0p3NXo5SEROR2ZUL2d3Q1BnYURqbngwaTh3N3ZCekZMRlIxZjZDTUxLRjhnVmJlYm1rVU4zZmEva1FKcFE9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtbXVzbCI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LWFybTY0LW11c2xAMS4zMi4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1VcFFrb2VucjRVSkV6Z1ZJWXBJODBsREZ2Um1QVmc2b3Fib05IZm9INENRSWZOQStIT3JaN01vN0taUDAyZEM2TGpnaFBRSmVCc3ZYaEpvZC93bklCZz09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtZ251IjogWyJsaWdodG5pbmdjc3MtbGludXgteDY0LWdudUAxLjMyLjAiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1WN1FyNTJJaFptZEtQVnIrVnR3OG8rV0xzUUpZQ1RkOGxvSWZwRGFNUldHVVpmQk9ZRUpleUpJa3FHSURNWlB3UHgyNHBVTWZ3U3h4SThwaHIvTWJPQT09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtbXVzbCI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LXg2NC1tdXNsQDEuMzIuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLWJZY0xwK1ZiMGF3c2lYZy84MHVDUmV6Q1lITmcxL2wzbXQwZ3pIbldWOVhQMVc1c0thNS9UQ2RHV2FSL3pCTTJQZUYvSGJzUXYvajJVUk5PaVZ1eFdnPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzLXdpbjMyLWFybTY0LW1zdmMiOiBbImxpZ2h0bmluZ2Nzcy13aW4zMi1hcm02NC1tc3ZjQDEuMzIuMCIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItOFNiQzhCUjQwcFM2YmFDTThzYnRZRFN3RVZRZDRKbEZUT2xhRDNnV0dIZlRoVGNBQm5OREJkYTZlVFplcWJvZmFsSUpoRngwcUt6Z0hKbWNQVG5HZHc9PSJdLAoKICAgICJsaWdodG5pbmdjc3Mtd2luMzIteDY0LW1zdmMiOiBbImxpZ2h0bmluZ2Nzcy13aW4zMi14NjQtbXN2Y0AxLjMyLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1BbXE5Qi9Tb1pZZERpMWtGcm9qbm9xUEx4WWhRNFdvNVhpTDhFVkpyVnNCOEFSb0MxUFdXNlZHdFQwV0tDZW1qeThhQytsb3VKbmpTN1UxOHgzYjA2UT09Il0sCgogICAgIm1hZ2ljLXN0cmluZyI6IFsibWFnaWMtc3RyaW5nQDAuMzAuMjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjIjogIl4xLjUuNSIgfSB9LCAic2hhNTEyLXZkMkY0WVV5RVhLR2NMSG9xK1RFeUNqeHVlU2VIbkZ4eXlqTnA4MHlnMFhWNHZVaG5EZXIvbHZ2bHFNL2FyQjViWFFONUsyLzNvaW55Q1J5eDhUMkNRPT0iXSwKCiAgICAibmFub2lkIjogWyJuYW5vaWRAMy4zLjEyIiwgIiIsIHsgImJpbiI6IHsgIm5hbm9pZCI6ICJiaW4vbmFub2lkLmNqcyIgfSB9LCAic2hhNTEyLVpCOVJILzM5cXBxNVZ1NlkrTm1VYUZoUVI2cHArTTJYdDc2WEJuRXdEYUdjVkFxaGx2eHJsM0IyYktTNUQzTkgzUVI3NnYzYVNyS2FGL0tpeTdsRXRRPT0iXSwKCiAgICAibmV4dCI6IFsibmV4dEAxNi4yLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQG5leHQvZW52IjogIjE2LjIuNiIsICJAc3djL2hlbHBlcnMiOiAiMC41LjE1IiwgImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZyI6ICJeMi45LjE5IiwgImNhbml1c2UtbGl0ZSI6ICJeMS4wLjMwMDAxNTc5IiwgInBvc3Rjc3MiOiAiOC40LjMxIiwgInN0eWxlZC1qc3giOiAiNS4xLjYiIH0sICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBuZXh0L3N3Yy1kYXJ3aW4tYXJtNjQiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy1kYXJ3aW4teDY0IjogIjE2LjIuNiIsICJAbmV4dC9zd2MtbGludXgtYXJtNjQtZ251IjogIjE2LjIuNiIsICJAbmV4dC9zd2MtbGludXgtYXJtNjQtbXVzbCI6ICIxNi4yLjYiLCAiQG5leHQvc3djLWxpbnV4LXg2NC1nbnUiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy1saW51eC14NjQtbXVzbCI6ICIxNi4yLjYiLCAiQG5leHQvc3djLXdpbjMyLWFybTY0LW1zdmMiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy13aW4zMi14NjQtbXN2YyI6ICIxNi4yLjYiLCAic2hhcnAiOiAiXjAuMzQuNSIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJAb3BlbnRlbGVtZXRyeS9hcGkiOiAiXjEuMS4wIiwgIkBwbGF5d3JpZ2h0L3Rlc3QiOiAiXjEuNTEuMSIsICJiYWJlbC1wbHVnaW4tcmVhY3QtY29tcGlsZXIiOiAiKiIsICJyZWFjdCI6ICJeMTguMi4wIHx8IDE5LjAuMC1yYy1kZTY4ZDJmNC0yMDI0MTIwNCB8fCBeMTkuMC4wIiwgInJlYWN0LWRvbSI6ICJeMTguMi4wIHx8IDE5LjAuMC1yYy1kZTY4ZDJmNC0yMDI0MTIwNCB8fCBeMTkuMC4wIiwgInNhc3MiOiAiXjEuMy4wIiB9LCAib3B0aW9uYWxQZWVycyI6IFsiQG9wZW50ZWxlbWV0cnkvYXBpIiwgIkBwbGF5d3JpZ2h0L3Rlc3QiLCAiYmFiZWwtcGx1Z2luLXJlYWN0LWNvbXBpbGVyIiwgInNhc3MiXSwgImJpbiI6IHsgIm5leHQiOiAiZGlzdC9iaW4vbmV4dCIgfSB9LCAic2hhNTEyLXFPVmdLSmcxK0F0MTVOcGVVUCtlSmdDSHZUQ2dYc29nd2VxODdSaS9JeDdQa3FRSGc0c2RhWG1TRnFLbGdhSVhFNGtXMGcyNUxFNjhXODdVQU5sSHR3PT0iXSwKCiAgICAib2J1ZyI6IFsib2J1Z0AyLjEuMSIsICIiLCB7fSwgInNoYTUxMi11VHFGOU11UHJhQVErSXNuUGYzNjZSRzRjUDlSdFVpN01MTzFOM0tFYyt3YjBhNnlLcGVMMGxtazJJQjFqWTVLSFBBbFRjNlQvSlJkQy9ZcXhITndrUT09Il0sCgogICAgInBhdGhlIjogWyJwYXRoZUAyLjAuMyIsICIiLCB7fSwgInNoYTUxMi1XVWpHY0FxUDFnUWFjb1FlK09CSnNGQTdMZDREeVh1VUlqWjVjYzc1Y0xIdko3ZHROc1R1Z3BoeElBRHdzcFMrQXJhQVVlUENLclNWdFBMRmovRjg4dz09Il0sCgogICAgInBpY29jb2xvcnMiOiBbInBpY29jb2xvcnNAMS4xLjEiLCAiIiwge30sICJzaGE1MTIteGNlSDJzbmh0YjVNOWxpcURzbUV3NTZsZTM3Nm1UWmtFWC9qRWIvUnhORnllZ051bDdlTnNsQ1hQOUZEai9MY3UwWDhLRXlNY2VQMm50cGFIckRFVkE9PSJdLAoKICAgICJwaWNvbWF0Y2giOiBbInBpY29tYXRjaEA0LjAuNCIsICIiLCB7fSwgInNoYTUxMi1RUDg4QkFLdk1hbS8zTnhINnZqMm8yMVI2TWp4WlVBZDZubHdBUy9wbkd2TjlJVkxvY0xIeEdZSXpGaGc2ZlVRKzV0aDZQNGR2NGVXOWpYM0RTSWo3QT09Il0sCgogICAgInBvc3Rjc3MiOiBbInBvc3Rjc3NAOC41LjE1IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIm5hbm9pZCI6ICJeMy4zLjEyIiwgInBpY29jb2xvcnMiOiAiXjEuMS4xIiwgInNvdXJjZS1tYXAtanMiOiAiXjEuMi4xIiB9IH0sICJzaGE1MTItRmZSOHNqZDRlbTJUNmZiM0kyTXdBSlU3SFdWTXI5emJhK2VubVFlZVdGZkNibStVT0MvMFg0RFM4WHRwVVRNd1dNR2JqS1lQN3hqZk5la3p5R21CM0E9PSJdLAoKICAgICJyZWFjdCI6IFsicmVhY3RAMTkuMi42IiwgIiIsIHt9LCAic2hhNTEyLXNmV0dHZmF2aTB4cjhQZzBzVnN5SE1BT3ppVllLZ1BMTnJTN2lnK2l2TU5iM3diQ0J3M0t4dGZsc0dCQXdEM2dZUWxFL0FFWnNUTGdUb1JyU0NqYjBRPT0iXSwKCiAgICAicmVhY3QtZGF5LXBpY2tlciI6IFsicmVhY3QtZGF5LXBpY2tlckA5LjE0LjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGRhdGUtZm5zL3R6IjogIl4xLjQuMSIsICJAdGFiYnlfYWkvaGlqcmktY29udmVydGVyIjogIjEuMC41IiwgImRhdGUtZm5zIjogIl40LjEuMCIsICJkYXRlLWZucy1qYWxhbGkiOiAiNC4xLjAtMCIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJyZWFjdCI6ICI+PTE2LjguMCIgfSB9LCAic2hhNTEyLXRCYW9EV2pQd2UwTTVwR3J1bTRIMFNSNkx5aytCTzlvSG5wOUpiS3BHS1cybWxyYU5QZ1A5Qk1mc2c1cFdwd3Jzc0FSbWVxazdZQmwyb1h1dFpUYUhBPT0iXSwKCiAgICAicmVhY3QtZG9tIjogWyJyZWFjdC1kb21AMTkuMi42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInNjaGVkdWxlciI6ICJeMC4yNy4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgInJlYWN0IjogIl4xOS4yLjYiIH0gfSwgInNoYTUxMi0wcHJNSStodkJiUGpzV254REx4bENHeU04UE42VXVXakVVQ1ltWmhPNjd4SVY5WGFzYS9yL3ZEbnErWHlxNExvMjdnOFFTYk81WXpBUnUwRDFTcHMzZz09Il0sCgogICAgInJlcXVpcmUtZGlyZWN0b3J5IjogWyJyZXF1aXJlLWRpcmVjdG9yeUAyLjEuMSIsICIiLCB7fSwgInNoYTUxMi1mR3hFSTcrd3NHOXhydmRqc3JsbUwyMk9NVFRpSFJ3QU1yb2lFZU1ncThnem9MQy9QUXI3UnNSRFNUTFVnL2JaQVp0RitUVklrSGM2LzRSSUtydWkrUT09Il0sCgogICAgInJlc2VsZWN0IjogWyJyZXNlbGVjdEA1LjIuMCIsICIiLCB7fSwgInNoYTUxMi1BZ1ozVU9abTNZbmRmcko0T1lqZ3JUN2JtQ20vMWlxa2p2RWZIL29ZanpoNlBEMnF3NFF1VDNqam5YSXJwZHQ0TVRwTVhjbE1UM2xYYm1SWStYUmFrdz09Il0sCgogICAgInJvbGxkb3duIjogWyJyb2xsZG93bkAxLjAuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAb3hjLXByb2plY3QvdHlwZXMiOiAiPTAuMTMwLjAiLCAiQHJvbGxkb3duL3BsdWdpbnV0aWxzIjogIl4xLjAuMCIgfSwgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQHJvbGxkb3duL2JpbmRpbmctYW5kcm9pZC1hcm02NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1kYXJ3aW4tYXJtNjQiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1mcmVlYnNkLXg2NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmIjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LWFybTY0LWdudSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsIjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXBwYzY0LWdudSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1zMzkweC1nbnUiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctbGludXgteDY0LWdudSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC14NjQtbXVzbCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1vcGVuaGFybW9ueS1hcm02NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy13YXNtMzItd2FzaSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjIjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLXdpbjMyLXg2NC1tc3ZjIjogIjEuMC4xIiB9LCAiYmluIjogeyAicm9sbGRvd24iOiAiYmluL2NsaS5tanMiIH0gfSwgInNoYTUxMi1YMEtRSGxqTm5Fa1dOcXFpejl6SnJHdW5oMUIwSGdPeExYdm5GcENPY2FkemN5NXFvaFozdHFNRVVnMDB2bmNvUm92WHVLM1pxQ1Q5S25uS3pvSW5GUT09Il0sCgogICAgInJ4anMiOiBbInJ4anNANy44LjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuMS4wIiB9IH0sICJzaGE1MTItZGhLZjkwM1UvUFFaWTZib05OdEFHZFdiRzg1V0FialQvMXhZb1pJQzdGQVkweVdhcE9CUVZzVnJEbDU4Vzg2Ly9lMVZwTU5CdFJWNE1hWGZkTXlTRkE9PSJdLAoKICAgICJzY2hlZHVsZXIiOiBbInNjaGVkdWxlckAwLjI3LjAiLCAiIiwge30sICJzaGE1MTItZU52K1dyVmJLdTFmM3ZiWUpUL3h0aUY1c3lBNUhQSU10ZjlJZ1kvbktnMHNXcXpBVUV2cVkveG03T2NaYy9xYWZMeC9pTzlGZ09tZVNBcDR2NXRpL1E9PSJdLAoKICAgICJzZW12ZXIiOiBbInNlbXZlckA3LjguMCIsICIiLCB7ICJiaW4iOiB7ICJzZW12ZXIiOiAiYmluL3NlbXZlci5qcyIgfSB9LCAic2hhNTEyLUFjTTdkVi81dWw0RWVrb1EyOUFnbTV2cmk4Sk5xUnlqMzlvMHFwWDZ2REYyR1pydHV0Wmw1UndnRDFYblpqaVRBZm5jc0poTUk0OFFRSDNzTjg3WU5BPT0iXSwKCiAgICAic2hhcnAiOiBbInNoYXJwQDAuMzQuNSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAaW1nL2NvbG91ciI6ICJeMS4wLjAiLCAiZGV0ZWN0LWxpYmMiOiAiXjIuMS4yIiwgInNlbXZlciI6ICJeNy43LjMiIH0sICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtZGFyd2luLWFybTY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLWRhcndpbi14NjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWRhcndpbi14NjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybSI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgtYXJtNjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1yaXNjdjY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1zMzkweCI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgteDY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4bXVzbC14NjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saW51eC1hcm0iOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgtYXJtNjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgtcHBjNjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgtcmlzY3Y2NCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC1saW51eC1zMzkweCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC1saW51eC14NjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXhtdXNsLWFybTY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLWxpbnV4bXVzbC14NjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtd2FzbTMyIjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLXdpbjMyLWFybTY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLXdpbjMyLWlhMzIiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtd2luMzIteDY0IjogIjAuMzQuNSIgfSB9LCAic2hhNTEyLU91OUk1RnQ5V05jQ2JYclU5Y01nUEJjQ0s4TGl3THFjYnl3VzN0NG9EVjM3bjFwenB1TkxzWWlBVjhlT0RuamJ0UWxTRHdaMmNVRWVRejRFNTRIbHRnPT0iXSwKCiAgICAic2hlbGwtcXVvdGUiOiBbInNoZWxsLXF1b3RlQDEuOC4zIiwgIiIsIHt9LCAic2hhNTEyLU9ibW5JRjRoWE5nMUJxaG5IbWdiREVURjhkTFBDZ2daV0Jqa1FmaFpwYnN6Wm5ZdXI1RFVsalRjQ0hpaTVMQzNKNUUweWVPLzFMSU15SCtVdkhRZ3l3PT0iXSwKCiAgICAic2lnaW5mbyI6IFsic2lnaW5mb0AyLjAuMCIsICIiLCB7fSwgInNoYTUxMi15YngwV08xLzhiU0JMRVdYWnZFZDdnTVczU24zSkZsVzNUdlgxblJFYkRMUk5RTmFlTk44V0swbWVCd1BkQWFPSTdUdFJSUkpuL0VzMXpocnJDSHU3Zz09Il0sCgogICAgInNvdXJjZS1tYXAiOiBbInNvdXJjZS1tYXBAMC42LjEiLCAiIiwge30sICJzaGE1MTItVWpnYXB1bVdsYk1oa0JnelQ3WWtjNVlYVVQ0NkYwaUt1OFNHWHEwYmN3UDVkei9oMFBsajZlbkpxanoxWmJxMmw1V2FxWW5yVmJ3V09XTXlGM0Y0N2c9PSJdLAoKICAgICJzb3VyY2UtbWFwLWpzIjogWyJzb3VyY2UtbWFwLWpzQDEuMi4xIiwgIiIsIHt9LCAic2hhNTEyLVVYV01LaExPd1ZLYjcyOElVdFFQWHhmWVUrdXNkeWJ0VXJLLzh1R0U4Q1FNdnJoT3B3dnpEQndqMFFoU0w3TVFjN3ZJc0lTQkc4VlE4K0lEUXhwZlFBPT0iXSwKCiAgICAic291cmNlLW1hcC1zdXBwb3J0IjogWyJzb3VyY2UtbWFwLXN1cHBvcnRAMC41LjIxIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImJ1ZmZlci1mcm9tIjogIl4xLjAuMCIsICJzb3VyY2UtbWFwIjogIl4wLjYuMCIgfSB9LCAic2hhNTEyLXVCSFUzTDNjenNJeVlYS1g4OGZkckdvdnhkU0NvVEdEUlo2U1lYdFNSeExaVXpIZzVQLzY2SHQ2dW9VbEh1OUVab2QraW5YaEtvM3FRZ3dYVVQveTF3PT0iXSwKCiAgICAic3RhY2tiYWNrIjogWyJzdGFja2JhY2tAMC4wLjIiLCAiIiwge30sICJzaGE1MTItMVhNSkU1ZlFvMWpHSDZZLzdlYm53UE9CRWtJRW5UNFFGMzJkNVIxK1ZYZFh2ZU0wSUJNSnQ4emZheFgxUDNRaFZ3clllKzU3Nitqa0FOdFNTMm1CYnc9PSJdLAoKICAgICJzdGQtZW52IjogWyJzdGQtZW52QDQuMS4wIiwgIiIsIHt9LCAic2hhNTEyLVJxN3liY1gyUnVDNTVyOW9hUFZFVzcveHUzdGo4dTRHZUJZSEJXQ3ljaEZ0ek1Jcjg2QTdlM1BQRUJQVDM3c0hTdEtYMytUaVgvRnIvQUNtSkxWbExRPT0iXSwKCiAgICAic3RyaW5nLXdpZHRoIjogWyJzdHJpbmctd2lkdGhANC4yLjMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZW1vamktcmVnZXgiOiAiXjguMC4wIiwgImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50IjogIl4zLjAuMCIsICJzdHJpcC1hbnNpIjogIl42LjAuMSIgfSB9LCAic2hhNTEyLXdLeVFSUXBqSjBzSXA2MkVyU1pkR3NqTUpXc2FwNW9STmloSGh1Nkc3SlZPLzlqSUI2VXlldkwrdFh1T3Fybmc4ai9jeEtUV3lXVXd2U1RyaWlaei9nPT0iXSwKCiAgICAic3RyaXAtYW5zaSI6IFsic3RyaXAtYW5zaUA2LjAuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJhbnNpLXJlZ2V4IjogIl41LjAuMSIgfSB9LCAic2hhNTEyLVkzOFZQU0hjcWtGckNwRm5ROXZ1U1htcXV1djVvWE9LcEdlVDZhR3JyM28zR2M5QWxWYTZKQmZVU09DbmJ4R0daRisvMG9vSTdLclB1VVN6dFVkVTVBPT0iXSwKCiAgICAic3R5bGVkLWpzeCI6IFsic3R5bGVkLWpzeEA1LjEuNiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjbGllbnQtb25seSI6ICIwLjAuMSIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJyZWFjdCI6ICI+PSAxNi44LjAgfHwgMTcueC54IHx8IF4xOC4wLjAtMCB8fCBeMTkuMC4wLTAiIH0gfSwgInNoYTUxMi1xU1Z5RFRlTW90ZHZRWW9IV0xOR3dSRkpIQytpK1p2ZEJSWW9zT0ZnQytXZzF2eDRmck4yL1JHL05BN1NZcXF2S05MZjM5UDJMU1JBMnB1Nm4wWFlaQT09Il0sCgogICAgInN1cHBvcnRzLWNvbG9yIjogWyJzdXBwb3J0cy1jb2xvckA4LjEuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJoYXMtZmxhZyI6ICJeNC4wLjAiIH0gfSwgInNoYTUxMi1NcFVFTjJPb2R0VXp4dktRbDcyY1VGN1JRNUVpSHNHdlNzVkcwaWE5YzVSYldHTDJDSTRDN0VwUFM4VVRCSXBsbmx6WmlOdVY1NncrRnVOeHkzdHkyUT09Il0sCgogICAgInRhaWx3aW5kLW1lcmdlIjogWyJ0YWlsd2luZC1tZXJnZUAzLjYuMCIsICIiLCB7fSwgInNoYTUxMi11eEw3cUFWUXJpcVJRUEF5SzNwajY2VnFza1dxb1ozN1BXOTRqd09Ud05mcS96OW95dTFWK2VxclpxdFIyK2ZDaVhkWU9aZS9Nb2R0OEd0dnFOenUrdz09Il0sCgogICAgInRhaWx3aW5kY3NzIjogWyJ0YWlsd2luZGNzc0A0LjMuMCIsICIiLCB7fSwgInNoYTUxMi15Nm54TUdCMW5NVzlSNms5NmU1Z2RJRnpjZkwvZ1RKUk5hcUdlczFZdmtMblBWWHpXZ2JxRkYyeUxDMFQ4Rzc3NG4yNGN4M1BlOFhyS29uaUNPQUgrUT09Il0sCgogICAgInRhcGFibGUiOiBbInRhcGFibGVAMi4zLjMiLCAiIiwge30sICJzaGE1MTItdXhjL3pwcUZnNng3Qzh2T0U3bGg2TGJkYThlRUw5em1WbS9QTGVUUEJSaGgxeENnZFdhUStKMUNVaWVHcElmbTJIZHRzVXBSditIc2hpYXNCTWNjNkE9PSJdLAoKICAgICJ0ZXJzZXIiOiBbInRlcnNlckA1LjE2LjkiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlLW1hcCI6ICJeMC4zLjIiLCAiYWNvcm4iOiAiXjguNS4wIiwgImNvbW1hbmRlciI6ICJeMi4yMC4wIiwgInNvdXJjZS1tYXAtc3VwcG9ydCI6ICJ+MC41LjIwIiB9LCAiYmluIjogeyAidGVyc2VyIjogImJpbi90ZXJzZXIiIH0gfSwgInNoYTUxMi1IUGEvRmRUQjlYR0kySDEva2VMRlpIeGw2V052QUk0WWFsSEd0RFFUbE1uSmNvcVNhYjFVd0w0bDFoR0VoczYvR21MSEJaSWcvWWdCKytqY2J6b09FZz09Il0sCgogICAgInRpbnliZW5jaCI6IFsidGlueWJlbmNoQDIuOS4wIiwgIiIsIHt9LCAic2hhNTEyLTArRFV2cVdNVmFsTG1oYTZscjRrRDhpQU1LMUh6VjAvYUtuQ3RXYjl2OTY0MVRuUC9NRmI3UGMyYnhveFFqVFhBRXJyeVhWZ1VPZnYyWXFObGxxR2VnPT0iXSwKCiAgICAidGlueWV4ZWMiOiBbInRpbnlleGVjQDEuMS4yIiwgIiIsIHt9LCAic2hhNTEyLWRBcVNxRS9SYWJwQktJOCtoMjZHZkxxNlZiM0pWWHMzMFhZUWpkTWphai9jMnRTOElZWU1iSXpQNTk5S3RSajdjNTcvd1lBcGIzUWpnUmdYbXJDdWtBPT0iXSwKCiAgICAidGlueWdsb2JieSI6IFsidGlueWdsb2JieUAwLjIuMTYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZmRpciI6ICJeNi41LjAiLCAicGljb21hdGNoIjogIl40LjAuNCIgfSB9LCAic2hhNTEyLXBuOTlWaG9BQ1lSOG5GSGh4cWl4K3V2c2JYaW5lQWFzV201b2pYb044eEV3SzVLZDMvVHJoTm4xd0J5dUQ1MlV4V1JMeThwdStrUk1uaUVpNkVxOVpnPT0iXSwKCiAgICAidGlueXJhaW5ib3ciOiBbInRpbnlyYWluYm93QDMuMS4wIiwgIiIsIHt9LCAic2hhNTEyLUJmK0lMbUJncmV0VXJkSnh6WE0wU2dYTFozWGZpYVV1T2ovSUtRSHVUWGlwKzA1WG4rdXlFWWRWZzBrWURpcFRCY0xyQ1Z5VXpBUHo3UW1BcmIwbW13PT0iXSwKCiAgICAidHJlZS1raWxsIjogWyJ0cmVlLWtpbGxAMS4yLjIiLCAiIiwgeyAiYmluIjogeyAidHJlZS1raWxsIjogImNsaS5qcyIgfSB9LCAic2hhNTEyLUwwT3JwaThxR3BSRy8vTmQrSDkwdkZCKzNpSG51ZTF6U1NHbU5PT0NoMUdMSjdyVUtWd1YySHZpanBoR1FTMlVtaFVaZXdTOVZndnhZSWRncitmRzFBPT0iXSwKCiAgICAidHNsaWIiOiBbInRzbGliQDIuOC4xIiwgIiIsIHt9LCAic2hhNTEyLW9KRnU5NEhRYitLVmR1U1VRTDd3bnBtcW5mbUxzT0EvbkFoNmI2RUgwd0NFb0swL21QZVhVNmMzd0tEVjgzTWtPdUhQUkh0U1hLS1U5OUlCYXpTLzJ3PT0iXSwKCiAgICAidHlwZXNjcmlwdCI6IFsidHlwZXNjcmlwdEA1LjkuMyIsICIiLCB7ICJiaW4iOiB7ICJ0c2MiOiAiYmluL3RzYyIsICJ0c3NlcnZlciI6ICJiaW4vdHNzZXJ2ZXIiIH0gfSwgInNoYTUxMi1qbDF2WnpQRGluTHI5ZVV0M0ovdDdWNkZnTkV3OVFqdkJQZHlzejlLZlFERDQxZlFyQzJZNHZLUWRpYVVwRlQ0YlhsYjFSSGhMcHA4d3RtNk01VGdTdz09Il0sCgogICAgInVuZGljaS10eXBlcyI6IFsidW5kaWNpLXR5cGVzQDYuMjEuMCIsICIiLCB7fSwgInNoYTUxMi1pd0RacWcwUUFHcmc5UmF2NUg0bjBNNjRjM21rUjU5Y0o2d1FwKzdDNG5JMGdzbUV4YWVkYVlMTk80NGVUNEF0QkJ3amJUaUdQTWx0Mk1kMFQ5SDlKUT09Il0sCgogICAgInVzZS1zeW5jLWV4dGVybmFsLXN0b3JlIjogWyJ1c2Utc3luYy1leHRlcm5hbC1zdG9yZUAxLjYuMCIsICIiLCB7ICJwZWVyRGVwZW5kZW5jaWVzIjogeyAicmVhY3QiOiAiXjE2LjguMCB8fCBeMTcuMC4wIHx8IF4xOC4wLjAgfHwgXjE5LjAuMCIgfSB9LCAic2hhNTEyLVBwNkdTd0dQL05yUElyeFZGQUlrT1FleXc4bEZlbk9IaWpRV2tVVHJEdnJGNEFMcXlsUDJDL0tDa2VTOWRwVU0zS3ZZUlFobmE1dnQ3SUw5NStaUTl3PT0iXSwKCiAgICAidml0ZSI6IFsidml0ZUA4LjAuMTMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAibGlnaHRuaW5nY3NzIjogIl4xLjMyLjAiLCAicGljb21hdGNoIjogIl40LjAuNCIsICJwb3N0Y3NzIjogIl44LjUuMTQiLCAicm9sbGRvd24iOiAiMS4wLjEiLCAidGlueWdsb2JieSI6ICJeMC4yLjE2IiB9LCAib3B0aW9uYWxEZXBlbmRlbmNpZXMiOiB7ICJmc2V2ZW50cyI6ICJ+Mi4zLjMiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL25vZGUiOiAiXjIwLjE5LjAgfHwgPj0yMi4xMi4wIiwgIkB2aXRlanMvZGV2dG9vbHMiOiAiXjAuMS4xOCIsICJlc2J1aWxkIjogIl4wLjI3LjAgfHwgXjAuMjguMCIsICJqaXRpIjogIj49MS4yMS4wIiwgImxlc3MiOiAiXjQuMC4wIiwgInNhc3MiOiAiXjEuNzAuMCIsICJzYXNzLWVtYmVkZGVkIjogIl4xLjcwLjAiLCAic3R5bHVzIjogIj49MC41NC44IiwgInN1Z2Fyc3MiOiAiXjUuMC4wIiwgInRlcnNlciI6ICJeNS4xNi4wIiwgInRzeCI6ICJeNC44LjEiLCAieWFtbCI6ICJeMi40LjIiIH0sICJvcHRpb25hbFBlZXJzIjogWyJAdHlwZXMvbm9kZSIsICJAdml0ZWpzL2RldnRvb2xzIiwgImVzYnVpbGQiLCAiaml0aSIsICJsZXNzIiwgInNhc3MiLCAic2Fzcy1lbWJlZGRlZCIsICJzdHlsdXMiLCAic3VnYXJzcyIsICJ0ZXJzZXIiLCAidHN4IiwgInlhbWwiXSwgImJpbiI6IHsgInZpdGUiOiAiYmluL3ZpdGUuanMiIH0gfSwgInNoYTUxMi1NRnRqQllnem1TeG1nQTRSQWZqSXlYV3BHZTFvQUxuamdVVHp6VjdRTHgvVEt4Q3pqdE1INkZkOS9lVksrNUZnMXFOb3o1VkF3c21Ncy9Ob2ZybUp2dz09Il0sCgogICAgInZpdGVzdCI6IFsidml0ZXN0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvZXhwZWN0IjogIjQuMS42IiwgIkB2aXRlc3QvbW9ja2VyIjogIjQuMS42IiwgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6ICI0LjEuNiIsICJAdml0ZXN0L3J1bm5lciI6ICI0LjEuNiIsICJAdml0ZXN0L3NuYXBzaG90IjogIjQuMS42IiwgIkB2aXRlc3Qvc3B5IjogIjQuMS42IiwgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAiZXMtbW9kdWxlLWxleGVyIjogIl4yLjAuMCIsICJleHBlY3QtdHlwZSI6ICJeMS4zLjAiLCAibWFnaWMtc3RyaW5nIjogIl4wLjMwLjIxIiwgIm9idWciOiAiXjIuMS4xIiwgInBhdGhlIjogIl4yLjAuMyIsICJwaWNvbWF0Y2giOiAiXjQuMC4zIiwgInN0ZC1lbnYiOiAiXjQuMC4wLXJjLjEiLCAidGlueWJlbmNoIjogIl4yLjkuMCIsICJ0aW55ZXhlYyI6ICJeMS4wLjIiLCAidGlueWdsb2JieSI6ICJeMC4yLjE1IiwgInRpbnlyYWluYm93IjogIl4zLjEuMCIsICJ2aXRlIjogIl42LjAuMCB8fCBeNy4wLjAgfHwgXjguMC4wIiwgIndoeS1pcy1ub2RlLXJ1bm5pbmciOiAiXjIuMy4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBlZGdlLXJ1bnRpbWUvdm0iOiAiKiIsICJAb3BlbnRlbGVtZXRyeS9hcGkiOiAiXjEuOS4wIiwgIkB0eXBlcy9ub2RlIjogIl4yMC4wLjAgfHwgXjIyLjAuMCB8fCA+PTI0LjAuMCIsICJAdml0ZXN0L2Jyb3dzZXItcGxheXdyaWdodCI6ICI0LjEuNiIsICJAdml0ZXN0L2Jyb3dzZXItcHJldmlldyI6ICI0LjEuNiIsICJAdml0ZXN0L2Jyb3dzZXItd2ViZHJpdmVyaW8iOiAiNC4xLjYiLCAiQHZpdGVzdC9jb3ZlcmFnZS1pc3RhbmJ1bCI6ICI0LjEuNiIsICJAdml0ZXN0L2NvdmVyYWdlLXY4IjogIjQuMS42IiwgIkB2aXRlc3QvdWkiOiAiNC4xLjYiLCAiaGFwcHktZG9tIjogIioiLCAianNkb20iOiAiKiIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkBlZGdlLXJ1bnRpbWUvdm0iLCAiQG9wZW50ZWxlbWV0cnkvYXBpIiwgIkB0eXBlcy9ub2RlIiwgIkB2aXRlc3QvYnJvd3Nlci1wbGF5d3JpZ2h0IiwgIkB2aXRlc3QvYnJvd3Nlci1wcmV2aWV3IiwgIkB2aXRlc3QvYnJvd3Nlci13ZWJkcml2ZXJpbyIsICJAdml0ZXN0L2NvdmVyYWdlLWlzdGFuYnVsIiwgIkB2aXRlc3QvY292ZXJhZ2UtdjgiLCAiQHZpdGVzdC91aSIsICJoYXBweS1kb20iLCAianNkb20iXSwgImJpbiI6IHsgInZpdGVzdCI6ICJ2aXRlc3QubWpzIiB9IH0sICJzaGE1MTItNmx2amJTM3A5YjRDcmRDbWd1emJoMi80dW9YaEdFMnE3MVI0T1g1c3FGOVIxYm85WGQ2ZkdyTUFmdnA1d25DemxCbkZWZENPcDZvbnVUUVZibzhpVVE9PSJdLAoKICAgICJ3aHktaXMtbm9kZS1ydW5uaW5nIjogWyJ3aHktaXMtbm9kZS1ydW5uaW5nQDIuMy4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInNpZ2luZm8iOiAiXjIuMC4wIiwgInN0YWNrYmFjayI6ICIwLjAuMiIgfSwgImJpbiI6IHsgIndoeS1pcy1ub2RlLXJ1bm5pbmciOiAiY2xpLmpzIiB9IH0sICJzaGE1MTItaFVybWFXQmRWRGN4dllxbnloMDl6dW5LelJPV2piWlRpTnk4ZEJFamtTN2VoRURRaWJYSjdYdmxtdGJ3dVRjbFVpSXlOK0N5WFFENFZta284Zk5tOHc9PSJdLAoKICAgICJ3cmFwLWFuc2kiOiBbIndyYXAtYW5zaUA3LjAuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJhbnNpLXN0eWxlcyI6ICJeNC4wLjAiLCAic3RyaW5nLXdpZHRoIjogIl40LjEuMCIsICJzdHJpcC1hbnNpIjogIl42LjAuMCIgfSB9LCAic2hhNTEyLVlWR0lqMmthbUxTVHh3Nk5zWmpvQnhmU3dzbjB5Y2Rlc21jNHArUTIxYzV6UHVaMXBsK05meFZkeFB0ZEh2bU5WT1E2WFNZRzRBVXR5dC9GaTdEMTZRPT0iXSwKCiAgICAieTE4biI6IFsieTE4bkA1LjAuOCIsICIiLCB7fSwgInNoYTUxMi0wcGZGemVnZURXSkhKSUFtVExSUDJEd0hqZEY1czdqbzl0dXp0ZFF4QWhJTkNkdlMrM25HSU5xUGQwMEFwaHFKUi8wTGhBTlVTNi8rN1NDYjk4WU9mQT09Il0sCgogICAgInlhbWwiOiBbInlhbWxAMi45LjAiLCAiIiwgeyAiYmluIjogeyAieWFtbCI6ICJiaW4ubWpzIiB9IH0sICJzaGE1MTItMkF2aE5YM21iOHpkNlp5N0lOVHRTcGwxRjE1SFc2V25xajBzcldsa0tMY3BZbC9nTUlNSml5dUdxMktlSTJZRnhVUGpkbEIrM0xjMTBzZU1MdEw0Y0E9PSJdLAoKICAgICJ5YXJncyI6IFsieWFyZ3NAMTcuNy4yIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImNsaXVpIjogIl44LjAuMSIsICJlc2NhbGFkZSI6ICJeMy4xLjEiLCAiZ2V0LWNhbGxlci1maWxlIjogIl4yLjAuNSIsICJyZXF1aXJlLWRpcmVjdG9yeSI6ICJeMi4xLjEiLCAic3RyaW5nLXdpZHRoIjogIl40LjIuMyIsICJ5MThuIjogIl41LjAuNSIsICJ5YXJncy1wYXJzZXIiOiAiXjIxLjEuMSIgfSB9LCAic2hhNTEyLTdkU3p6UlErK0NLbk5JL2tyS25ZUlY3SktLUFVYTUVoNjFzb2FIS2c5bXJXRWh6RldoRm54UHhHbCs2OWNEMU91NjNDMTNOVVBDbm1JY3J2cUN1TTZ3PT0iXSwKCiAgICAieWFyZ3MtcGFyc2VyIjogWyJ5YXJncy1wYXJzZXJAMjEuMS4xIiwgIiIsIHt9LCAic2hhNTEyLXRWcHNKVzdEZGplY0FpRnBiSUIxZTNxeElRc0U2Tm9QYzUvZVRkcmJiSUM0aDBMVnNXaG5vYTNnK20ySGNsQkl1akh6c3haNFZKVkErR1V1YzIvTEJ3PT0iXSwKCiAgICAiem9kIjogWyJ6b2RANC40LjMiLCAiIiwge30sICJzaGE1MTIteXRFTkZqSUpGbDJVd1lnbGRlMmpjaFcySHdtNEdKRkxEaVNYV2RUckpRQklOOUZjeXA3bjREaHhKRWlXTkFKTVYxL0JxV2ZXL2trZzcxVURjSEp5VFE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQGVtbmFwaS9jb3JlIjogWyJAZW1uYXBpL2NvcmVAMS4xMC4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvd2FzaS10aHJlYWRzIjogIjEuMi4xIiwgInRzbGliIjogIl4yLjQuMCIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTIteXE2T2tKNHA4MkNBZlBsMHU5bVFlYlFIS1BKa1k3V3JJdWsyMDVjVFluWWUrazJaOFlCaDExRnJiUkcvSDZpaGlycWNhY09nbDJCSU84b3lNUUxlWHc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQGVtbmFwaS9ydW50aW1lIjogWyJAZW1uYXBpL3J1bnRpbWVAMS4xMC4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRzbGliIjogIl4yLjQuMCIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItZXd2WWxrODZ4VW9HSTB6UVJOcS9tQysxNlIxUWVEbEtReTIxS2kzb1NZWE5nTGI0NUdWMVA2QTBNKy9zNm55Q3VORHFlNVZwYVk4NEJ6WEd3VmJ3RkE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQGVtbmFwaS93YXNpLXRocmVhZHMiOiBbIkBlbW5hcGkvd2FzaS10aHJlYWRzQDEuMi4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRzbGliIjogIl4yLjQuMCIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItdVRJSTdPWUYrL01lcy9NcmNJT1lwNXlPdFNNTEJXU0lvTFBwY2d3aXBvaUtibGk2azMyMnRjb0ZzeG9JSXhQRHFXMDFTUUdBZ2tvNEV6WmkyQk52Mnc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQG5hcGktcnMvd2FzbS1ydW50aW1lIjogWyJAbmFwaS1ycy93YXNtLXJ1bnRpbWVAMS4xLjQiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHR5YnlzL3dhc20tdXRpbCI6ICJeMC4xMC4xIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvY29yZSI6ICJeMS43LjEiLCAiQGVtbmFwaS9ydW50aW1lIjogIl4xLjcuMSIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItM05RTk5nQTFZU2xKYi9rTUgxaWxkQVNQOUhXNy83a1luUkkyc3pXSmFvZmFTMWhXbWJHSTRIK2QzKzIyYUd6WFhOOUlKK24rR2lGVmNHaXBKUDE4b3c9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQHR5YnlzL3dhc20tdXRpbCI6IFsiQHR5YnlzL3dhc20tdXRpbEAwLjEwLjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9LCAiYnVuZGxlZCI6IHRydWUgfSwgInNoYTUxMi1Sb0J2SjJYMHd1S2xXRklqcndmZkd3MUlxWkhLUXF6SWNoS2FhZFpaZm5OcHNBWXAybU0waDM2SnRQQ2pOREFIR2dZZXovMTV1TUJwZkd3Y2hoaU1nZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS13YXNtMzItd2FzaS90c2xpYiI6IFsidHNsaWJAMi44LjEiLCAiIiwgeyAiYnVuZGxlZCI6IHRydWUgfSwgInNoYTUxMi1vSkZ1OTRIUWIrS1ZkdVNVUUw3d25wbXFuZm1Mc09BL25BaDZiNkVIMHdDRW9LMC9tUGVYVTZjM3dLRFY4M01rT3VIUFJIdFNYS0tVOTlJQmF6Uy8ydz09Il0sCgogICAgImNoYWxrL3N1cHBvcnRzLWNvbG9yIjogWyJzdXBwb3J0cy1jb2xvckA3LjIuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJoYXMtZmxhZyI6ICJeNC4wLjAiIH0gfSwgInNoYTUxMi1xcENBdlJsOXN0dU9IdmVLc243SG5jSlJ2djUwMXFJYWNLelFsTy8rTHd4YzkrMHEyd0x5djREZnZ0ODAvRFBuMnBxT0JzSmREaW9nWEdSOStPdndSdz09Il0sCgogICAgIm5leHQvcG9zdGNzcyI6IFsicG9zdGNzc0A4LjQuMzEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAibmFub2lkIjogIl4zLjMuNiIsICJwaWNvY29sb3JzIjogIl4xLjAuMCIsICJzb3VyY2UtbWFwLWpzIjogIl4xLjAuMiIgfSB9LCAic2hhNTEyLVBTMDhJYm9pYTltdHMvMnlnVjNlTHBZNWdoblVjZkxWL0VYVE9XMUUycVl4SktHR0JVdE5qTjc2RllIbk1zMzZSbUFSbjQxYkMwQVptbityUjBPVnBRPT0iXSwKICB9Cn0K" }, { "path": "metadata.json", "kind": "text", "content": '{\n "id": "pharmacy",\n "name": "Pharmacy",\n "tagline": "Licensed community pharmacy with prescription uploads, pharmacist consults, and OTC catalog.",\n "industry": "healthcare",\n "tags": ["healthcare", "regulated", "prescription"],\n "stability": "stable",\n "schemaType": "Pharmacy",\n "mock": {\n "seedName": "pharmacy",\n "seedBusinessId": "bus_wellspring_pharmacy"\n }\n}\n' }, { "path": "next.config.ts", "kind": "text", "content": 'import type { NextConfig } from "next";\n\n// Same-origin proxy target for the storefront API. The public key\n// decides: a real `cpk_live_\u2026` / `cpk_test_\u2026` only resolves against\n// hosted Cimplify, so browser cart writes go to the same place the\n// server catalogue reads come from. Anything else (`mock-dev`, empty)\n// falls back to the local `cimplify dev` mock in dev.\nconst publicKey = process.env.NEXT_PUBLIC_CIMPLIFY_PUBLIC_KEY?.trim() ?? "";\nconst keyTargetsHostedCimplify =\n publicKey.startsWith("cpk_live_") || publicKey.startsWith("cpk_test_");\nconst STOREFRONT_URL =\n process.env.NODE_ENV === "production" || keyTargetsHostedCimplify\n ? "https://storefronts.cimplify.io"\n : "http://127.0.0.1:8787";\n\nif (STOREFRONT_URL === "http://127.0.0.1:8787") {\n console.warn(\n "[cimplify] next.config resolved the local storefront API URL; production deploys must run with NODE_ENV=production.",\n );\n}\n\n// Cache Components (\'use cache\' + cacheTag/cacheLife) require Node-specific\n// setTimeout atomicity and serialize a postponed state that routinely exceeds\n// CF Workers\' 128MB zlib limit. We\'re on Cloudflare Workers via opennext, so\n// we stay on Next 16\'s "Previous Model" \u2014 `fetch.next.{revalidate,tags}` via\n// the SDK\'s `cacheOptions`, plus `export const revalidate` per page. See\n// https://nextjs.org/docs/app/guides/caching-without-cache-components.\nconst nextConfig: NextConfig = {\n async redirects() {\n return [\n { source: "/login", destination: "/account", permanent: false },\n { source: "/signup", destination: "/account", permanent: false },\n ];\n },\n async rewrites() {\n return [\n { source: "/api/v1/:path*", destination: `${STOREFRONT_URL}/api/v1/:path*` },\n { source: "/img/:path*", destination: `${STOREFRONT_URL}/img/:path*` },\n { source: "/elements/:path*", destination: `${STOREFRONT_URL}/elements/:path*` },\n { source: "/_mock/:path*", destination: `${STOREFRONT_URL}/_mock/:path*` },\n ];\n },\n images: {\n loader: "custom",\n loaderFile: "./lib/cimplify-loader.ts",\n remotePatterns: [\n { protocol: "http", hostname: "127.0.0.1", port: "8787", pathname: "/img/**" },\n { protocol: "http", hostname: "localhost", port: "8787", pathname: "/img/**" },\n { protocol: "http", hostname: "localhost", port: "3000", pathname: "/img/**" },\n { protocol: "https", hostname: "loremflickr.com", pathname: "/**" },\n { protocol: "https", hostname: "images.unsplash.com", pathname: "/**" },\n { protocol: "https", hostname: "static-tmp.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "storefrontassetscdn.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "cdn.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "res.cloudinary.com", pathname: "/cimplify/**" },\n ],\n },\n};\n\nexport default nextConfig;\n' }, { "path": "CLAUDE.md", "kind": "text", "content": "# CLAUDE.md\n\nThis project was scaffolded from a Cimplify storefront template (`cimplify init`).\n\n## Read these first\n\n- **`AGENTS.md`** at the project root \u2014 the file \u2194 `brand.X` field map for *this template's* industry, plus the architectural rules.\n- **`.claude/skills/cimplify-storefront/SKILL.md`** \u2014 the playbook for common tasks (rebrand, add a section, wire a Server Action, deploy, eject a component). Invoke it whenever you're asked to change content, palette, copy, or routing.\n\n## The two-line summary\n\n1. **Edit `lib/brand.ts`** for any visible string.\n2. **Edit `app/globals.css` `@theme` block** for any palette / radius / font change.\n\nThat covers ~95% of what merchants ask for. For anything else, follow the `cimplify-storefront` skill.\n\n## Don't do\n\n- Hardcode strings in pages or components.\n- Enable `cacheComponents: true` in `next.config.ts` \u2014 we're on Cloudflare Workers, where `'use cache'` postponed state blows past CF's 128MB zlib limit. This template stays on Next 16's \"Previous Model\" (ISR): `export const revalidate` per page + `cacheOptions: { revalidate, tags }` on SDK reads.\n- Add `'use cache'`, `cacheTag`, or `cacheLife` anywhere. Use the SDK's `cacheOptions` instead.\n- Use `unstable_cache` \u2014 it's gone in Next 16. Use SDK `cacheOptions` or `fetch.next.{revalidate,tags}`.\n- Run `bun test` (Bun's `vi` shim is incomplete) \u2014 use `bun run test:run`.\n" }, { "path": "app/about/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `About \u2014 ${brand.name}`,\n description: brand.description,\n};\n\nexport default function AboutPage() {\n const a = brand.about;\n // Title supports a single \\n for a hard line break.\n const titleParts = a.title.split("\\n");\n return (\n <article className="max-w-3xl mx-auto px-6 sm:px-8 py-16">\n <p className="text-[11px] font-mono uppercase tracking-[0.16em] text-primary mb-2">\n {a.eyebrow}\n </p>\n <h1 className="text-[clamp(2.25rem,5vw,3.5rem)] font-bold mb-6 -tracking-[0.025em] leading-tight">\n {titleParts.map((line, i) => (\n <span key={i}>\n {line}\n {i < titleParts.length - 1 && <br />}\n </span>\n ))}\n </h1>\n <div className="prose prose-lg max-w-none space-y-5 text-foreground/90 leading-relaxed">\n {a.paragraphs.map((p, i) => (\n <p key={i}>{p}</p>\n ))}\n {a.sections.map((s) => (\n <div key={s.heading}>\n <h2 className="text-2xl font-semibold mt-10 mb-3 -tracking-[0.02em]">\n {s.heading}\n </h2>\n <p>{s.body}</p>\n </div>\n ))}\n </div>\n </article>\n );\n}\n' }, { "path": "app/llms.txt/route.ts", "kind": "text", "content": 'import { getServerClient, tags, type Product } from "@cimplify/sdk/server";\nimport { brand } from "@/lib/brand";\nimport { getSiteUrl } from "@/lib/site-url";\n\nexport const revalidate = 3600;\n\nasync function buildLlmsTxt(SITE_URL: string): Promise<string> {\n const client = getServerClient();\n const [productsRes, categoriesRes, collectionsRes] = await Promise.all([\n client.catalogue.getProducts(\n { limit: 500 },\n { cacheOptions: { revalidate: 3600, tags: [tags.products()] } },\n ),\n client.catalogue.getCategories({\n cacheOptions: { revalidate: 3600, tags: [tags.categories()] },\n }),\n client.catalogue.getCollections({\n cacheOptions: { revalidate: 3600, tags: [tags.collections()] },\n }),\n ]);\n\n const products: Product[] = productsRes.ok ? productsRes.value.items : [];\n const categories = categoriesRes.ok ? categoriesRes.value : [];\n const collections = collectionsRes.ok ? collectionsRes.value : [];\n\n const lines: string[] = [];\n lines.push(`# ${brand.name}`);\n lines.push("");\n lines.push(`> ${brand.llms.summary}`);\n lines.push("");\n lines.push("## Browse");\n lines.push(`- [Home](${SITE_URL}/)`);\n lines.push(`- [Shop](${SITE_URL}/shop): Full catalogue with filter and sort.`);\n\n if (categories.length > 0) {\n lines.push("");\n lines.push("## Categories");\n for (const c of categories) {\n lines.push(\n `- [${c.name}](${SITE_URL}/categories/${c.slug})${c.description ? `: ${c.description}` : ""}`,\n );\n }\n }\n\n if (collections.length > 0) {\n lines.push("");\n lines.push("## Collections");\n for (const c of collections) {\n lines.push(\n `- [${c.name}](${SITE_URL}/collections/${c.slug})${c.description ? `: ${c.description}` : ""}`,\n );\n }\n }\n\n if (products.length > 0) {\n lines.push("");\n lines.push("## Products");\n for (const p of products) {\n const slug = p.slug ?? p.id;\n const price = `${brand.currency} ${p.default_price}`;\n const desc = p.description ? ` \u2014 ${p.description.replace(/\\s+/g, " ").slice(0, 200)}` : "";\n lines.push(`- [${p.name}](${SITE_URL}/products/${slug}) (${price})${desc}`);\n }\n }\n\n lines.push("");\n lines.push("## Information");\n lines.push(`- [About](${SITE_URL}/about)`);\n lines.push(`- [Support / FAQ](${SITE_URL}/faq)`);\n lines.push(`- [Terms of Service](${SITE_URL}/terms)`);\n lines.push(`- [Privacy Policy](${SITE_URL}/privacy)`);\n lines.push(`- [Sitemap (XML)](${SITE_URL}/sitemap.xml)`);\n lines.push("");\n lines.push("## Contact");\n lines.push(`- Email: ${brand.contact.email}`);\n lines.push(`- Phone: ${brand.contact.phone}`);\n lines.push(`- Address: ${brand.contact.address}`);\n\n return lines.join("\\n") + "\\n";\n}\n\n/**\n * `/llms.txt` \u2014 machine-readable site index for LLMs (per llmstxt.org).\n * Lets coding agents and chat assistants find products, categories, and\n * support pages without scraping HTML. Plain Markdown so it streams cheaply\n * into context windows.\n */\nexport async function GET(): Promise<Response> {\n const body = await buildLlmsTxt(await getSiteUrl());\n return new Response(body, {\n headers: {\n "Content-Type": "text/plain; charset=utf-8",\n "Cache-Control": "public, max-age=0, s-maxage=3600, stale-while-revalidate=86400",\n },\n });\n}\n' }, { "path": "app/contact/contact-form.tsx", "kind": "text", "content": `"use client";
|
|
1668
|
+
` }, { "path": "lib/site-url.ts", "kind": "text", "content": 'import { SITE_URL } from "./site.config";\n\n/** Canonical absolute URL for this storefront. */\nexport async function getSiteUrl(): Promise<string> {\n return SITE_URL;\n}\n' }, { "path": "lib/cimplify-loader.ts", "kind": "text", "content": 'import type { ImageLoader } from "next/image";\n\nimport { assetUrl, isCimplifyAsset } from "@cimplify/sdk";\n\nconst cdnBase = process.env.NEXT_PUBLIC_CIMPLIFY_CDN_URL?.trim() || undefined;\n\nconst cimplifyImageLoader: ImageLoader = ({ src, width, quality }) => {\n if (isCimplifyAsset(src, cdnBase)) {\n return assetUrl(src, {\n base: cdnBase,\n w: width,\n quality,\n format: "auto",\n });\n }\n return src;\n};\n\nexport default cimplifyImageLoader;\n' }, { "path": "lib/cart.ts", "kind": "text", "content": '"use client";\n\nimport { useCart } from "@cimplify/sdk/react";\n\n/**\n * Reactive cart count for the header pill. Subscribes to the SDK cart\n * state \u2014 updates immediately on add / remove / quantity change.\n */\nexport function useCartCount(): { count: number } {\n const { itemCount } = useCart();\n return { count: itemCount };\n}\n' }, { "path": ".gitignore", "kind": "text", "content": "node_modules\n.next\n.open-next\nout\n.env\n.env.local\n.env*.local\n.DS_Store\n*.tsbuildinfo\nnext-env.d.ts\n" }, { "path": "package.json", "kind": "text", "content": '{\n "name": "__STOREFRONT_NAME__",\n "private": true,\n "version": "0.0.0",\n "scripts": {\n "dev": "concurrently -k -n mock,next -c blue,magenta \\"cimplify-mock --seed pharmacy --quiet\\" \\"next dev\\"",\n "dev:storefront": "next dev",\n "dev:mock": "cimplify-mock --seed pharmacy",\n "build": "next build",\n "start": "next start",\n "typecheck": "tsc --noEmit",\n "test": "vitest",\n "test:run": "vitest run",\n "check:brand": "vitest run __tests__/brand.test.ts",\n "check:cart": "vitest run __tests__/cart-flow.test.ts",\n "check:contract": "vitest run __tests__/contract.test.ts",\n "check": "bun run typecheck && bun run test:run"\n },\n "dependencies": {\n "@cimplify/sdk": "^0.57.0",\n "next": "^16.2.6",\n "react": "^19.0.0",\n "react-dom": "^19.0.0"\n },\n "devDependencies": {\n "@tailwindcss/postcss": "^4.2.4",\n "@types/node": "^22.10.0",\n "@types/react": "^19.0.0",\n "@types/react-dom": "^19.0.0",\n "concurrently": "^9.0.0",\n "tailwindcss": "^4.2.4",\n "typescript": "^5.9.3",\n "vitest": "^4.1.5"\n }\n}\n' }, { "path": "bun.lock", "kind": "binary", "content": "ewogICJsb2NrZmlsZVZlcnNpb24iOiAxLAogICJjb25maWdWZXJzaW9uIjogMSwKICAid29ya3NwYWNlcyI6IHsKICAgICIiOiB7CiAgICAgICJuYW1lIjogIl9fU1RPUkVGUk9OVF9OQU1FX18iLAogICAgICAiZGVwZW5kZW5jaWVzIjogewogICAgICAgICJAY2ltcGxpZnkvc2RrIjogIl4wLjU0LjAiLAogICAgICAgICJuZXh0IjogIl4xNi4yLjYiLAogICAgICAgICJyZWFjdCI6ICJeMTkuMC4wIiwKICAgICAgICAicmVhY3QtZG9tIjogIl4xOS4wLjAiLAogICAgICB9LAogICAgICAiZGV2RGVwZW5kZW5jaWVzIjogewogICAgICAgICJAdGFpbHdpbmRjc3MvcG9zdGNzcyI6ICJeNC4yLjQiLAogICAgICAgICJAdHlwZXMvbm9kZSI6ICJeMjIuMTAuMCIsCiAgICAgICAgIkB0eXBlcy9yZWFjdCI6ICJeMTkuMC4wIiwKICAgICAgICAiQHR5cGVzL3JlYWN0LWRvbSI6ICJeMTkuMC4wIiwKICAgICAgICAiY29uY3VycmVudGx5IjogIl45LjAuMCIsCiAgICAgICAgInRhaWx3aW5kY3NzIjogIl40LjIuNCIsCiAgICAgICAgInR5cGVzY3JpcHQiOiAiXjUuOS4zIiwKICAgICAgICAidml0ZXN0IjogIl40LjEuNSIsCiAgICAgIH0sCiAgICB9LAogIH0sCiAgInBhY2thZ2VzIjogewogICAgIkBhbGxvYy9xdWljay1scnUiOiBbIkBhbGxvYy9xdWljay1scnVANS4yLjAiLCAiIiwge30sICJzaGE1MTItVXJjQUJCKzRiVXJGQUJ3Ymx1VElCRXJYd3Zic1UvVjdUWldmbWJnSmZia3dpQnV6aVM5Z3hkT0RVeXVpZWNmZEdRODVqZ2xNVzZqdVMzK3o1VHNLTHc9PSJdLAoKICAgICJAYmFiZWwvcnVudGltZSI6IFsiQGJhYmVsL3J1bnRpbWVANy4yOS4yIiwgIiIsIHt9LCAic2hhNTEyLUppRFNoSDQ1ektIV3lHZTRaTlZSckNqQno4Tmg5VE1tWkcxa2g0UVRLOGhDQlRXQmk4RGEraTdzMWZKdzcvbFlwTTRjY2VwU05mcXpaL1F2QUJCaTVnPT0iXSwKCiAgICAiQGJhc2UtdWkvcmVhY3QiOiBbIkBiYXNlLXVpL3JlYWN0QDEuNS4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBiYWJlbC9ydW50aW1lIjogIl43LjI5LjIiLCAiQGJhc2UtdWkvdXRpbHMiOiAiMC4yLjkiLCAiQGZsb2F0aW5nLXVpL3JlYWN0LWRvbSI6ICJeMi4xLjgiLCAiQGZsb2F0aW5nLXVpL3V0aWxzIjogIl4wLjIuMTEiLCAidXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUiOiAiXjEuNi4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBkYXRlLWZucy90eiI6ICJeMS4yLjAiLCAiQHR5cGVzL3JlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgImRhdGUtZm5zIjogIl40LjAuMCIsICJyZWFjdCI6ICJeMTcgfHwgXjE4IHx8IF4xOSIsICJyZWFjdC1kb20iOiAiXjE3IHx8IF4xOCB8fCBeMTkiIH0sICJvcHRpb25hbFBlZXJzIjogWyJAZGF0ZS1mbnMvdHoiLCAiQHR5cGVzL3JlYWN0IiwgImRhdGUtZm5zIl0gfSwgInNoYTUxMi16MWdTQWxjZWQxeVkraU0rbUhERXRJa0Q4VUkzRWJzNTJNdUJQeHZWNmY1aFJ1dGsreHZDSC93dUI3aERxRHpLOUpHNUZvTXo1bmhycXRTczF3anQxQT09Il0sCgogICAgIkBiYXNlLXVpL3V0aWxzIjogWyJAYmFzZS11aS91dGlsc0AwLjIuOSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYmFiZWwvcnVudGltZSI6ICJeNy4yOS4yIiwgIkBmbG9hdGluZy11aS91dGlscyI6ICJeMC4yLjExIiwgInJlc2VsZWN0IjogIl41LjEuMSIsICJ1c2Utc3luYy1leHRlcm5hbC1zdG9yZSI6ICJeMS42LjAiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL3JlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgInJlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgInJlYWN0LWRvbSI6ICJeMTcgfHwgXjE4IHx8IF4xOSIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkB0eXBlcy9yZWFjdCJdIH0sICJzaGE1MTIteC9QRERDWXpvcVBwanJkeWIzVmN5eWxUSTJJalVYRXRZREdpNWZvaDdLc25tTkpJSWFWd0EyR0xnREgxZHBzMUdnWGlKYkE2MGhNK0F5dVRmUXpJdnc9PSJdLAoKICAgICJAY2ltcGxpZnkvc2RrIjogWyJAY2ltcGxpZnkvc2RrQDAuNTQuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYmFzZS11aS9yZWFjdCI6ICJeMS40LjEiLCAiY2xzeCI6ICJeMi4xLjEiLCAiZGF0ZS1mbnMiOiAiXjQuMS4wIiwgImxpYnBob25lbnVtYmVyLWpzIjogIjEuMTIuNDEiLCAicmVhY3QtZGF5LXBpY2tlciI6ICJeOS4xNC4wIiwgInRhaWx3aW5kLW1lcmdlIjogIl4zLjUuMCIsICJ6b2QiOiAiXjQuNC4zIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBwYXlzdGFjay9pbmxpbmUtanMiOiAiXjIuMjIuOCIsICJtc3ciOiAiPj0yLjAuMCIsICJyZWFjdCI6ICI+PTE3LjAuMCIsICJ2aXRlc3QiOiAiPj0yLjAuMCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkBwYXlzdGFjay9pbmxpbmUtanMiLCAibXN3IiwgInJlYWN0IiwgInZpdGVzdCJdLCAiYmluIjogeyAiY2ltcGxpZnktbW9jayI6ICJkaXN0L21vY2svY2xpLm1qcyIgfSB9LCAic2hhNTEyLVlVTi9sT3FWaUhjaTF2OVVTV1d3QVd0eTI5cEVYQmRMVHVLYXJTbDhFcGFmV2g1amtkR1oxUStOZTkvYmZnVFptUjhpVFVsdEE4VTdnbFYyRm9SU2dnPT0iXSwKCiAgICAiQGRhdGUtZm5zL3R6IjogWyJAZGF0ZS1mbnMvdHpAMS40LjEiLCAiIiwge30sICJzaGE1MTItUDVMVU5odGJqNllmSTNpSmp3NUVMOWVVQUc2T2l0RDBXM2ZXUWNwUWpEUmMvUUlzTDB0Uk51TzFQY0R2UGNjV0wxZlNUWFhkRTFkcytsOTVEVi9PRkE9PSJdLAoKICAgICJAZW1uYXBpL2NvcmUiOiBbIkBlbW5hcGkvY29yZUAxLjEwLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGVtbmFwaS93YXNpLXRocmVhZHMiOiAiMS4yLjEiLCAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTIteXE2T2tKNHA4MkNBZlBsMHU5bVFlYlFIS1BKa1k3V3JJdWsyMDVjVFluWWUrazJaOFlCaDExRnJiUkcvSDZpaGlycWNhY09nbDJCSU84b3lNUUxlWHc9PSJdLAoKICAgICJAZW1uYXBpL3J1bnRpbWUiOiBbIkBlbW5hcGkvcnVudGltZUAxLjEwLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTItZXd2WWxrODZ4VW9HSTB6UVJOcS9tQysxNlIxUWVEbEtReTIxS2kzb1NZWE5nTGI0NUdWMVA2QTBNKy9zNm55Q3VORHFlNVZwYVk4NEJ6WEd3VmJ3RkE9PSJdLAoKICAgICJAZW1uYXBpL3dhc2ktdGhyZWFkcyI6IFsiQGVtbmFwaS93YXNpLXRocmVhZHNAMS4yLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTItdVRJSTdPWUYrL01lcy9NcmNJT1lwNXlPdFNNTEJXU0lvTFBwY2d3aXBvaUtibGk2azMyMnRjb0ZzeG9JSXhQRHFXMDFTUUdBZ2tvNEV6WmkyQk52Mnc9PSJdLAoKICAgICJAZXNidWlsZC9haXgtcHBjNjQiOiBbIkBlc2J1aWxkL2FpeC1wcGM2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYWl4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi0xVkNJQ1d5cGVRS2hWYkU5b1cvc0phQW1qTHhoVnFhY2RrdlBMRWp3bHR0amZ3RU5SU0NsUzhFakJ6MEt6UnlGU0NQRElrdVhXMzRKZS92azd6ZEI3UT09Il0sCgogICAgIkBlc2J1aWxkL2FuZHJvaWQtYXJtIjogWyJAZXNidWlsZC9hbmRyb2lkLWFybUAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtIiB9LCAic2hhNTEyLVFOZFFFcHM3RGZGd0UzaFhpVTRCWmVPVjY4SEh6WXdHZDBOdGhoZDN1Q2trRUtLNy9SNk1UZ00wUDdIN0ZBczVwVS9ESVdzdmlNbUVHeEVveElaK1pRPT0iXSwKCiAgICAiQGVzYnVpbGQvYW5kcm9pZC1hcm02NCI6IFsiQGVzYnVpbGQvYW5kcm9pZC1hcm02NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItYkJ5NjlwZ2ZoTUd0Q253cEMveDVRaGZ4QXovY0JnUTllbmJ0d2pmNlY5bG5QSS9oTXlUOWlXcFIxYXJtMGwza3R0VHI0TDBLU0xwS21McC9pbEtTOUE9PSJdLAoKICAgICJAZXNidWlsZC9hbmRyb2lkLXg2NCI6IFsiQGVzYnVpbGQvYW5kcm9pZC14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImFuZHJvaWQiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1UVmhkVnRRSUZ1VnBJSVIyODJidGNHQzJvR1FvU2ZaZm1CZFRpcDJhbkNhVlljcVdsWlhHY2RjS0lVa2xmWDJ3ajBKa2xOWWd6MzlPQnFoMmNxWHZjUT09Il0sCgogICAgIkBlc2J1aWxkL2Rhcndpbi1hcm02NCI6IFsiQGVzYnVpbGQvZGFyd2luLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVkxZ2lDZk00bmxIRFdFZlNja016ZVdOZFFTMzFCUUdzOS9yb3V3NlViOTF0a0s3OWFJTVRIM3E5eEh2ekg4ZDB3RHJ1NUNpMGtXQjhiM3VwL25sMTZnPT0iXSwKCiAgICAiQGVzYnVpbGQvZGFyd2luLXg2NCI6IFsiQGVzYnVpbGQvZGFyd2luLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiZGFyd2luIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItQ0pzcnk4WkdNNVZGVmV5VVlCM2NkS3BkL0g2OVBZZXo0ZUpoMVcvdDM4dnp1dGRqRWp0UDdoQjZlTEtCb09keGNBbEN0RVlIelEvUEovb1U5STR1MEE9PSJdLAoKICAgICJAZXNidWlsZC9mcmVlYnNkLWFybTY0IjogWyJAZXNidWlsZC9mcmVlYnNkLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi15WXErMzlObFRSelUyWG1vUFc0bDVJZnBsOWZxU2swbkFKWU0vVi9XVUdQRUZmZWsxZXBMSEpJa1RRTTZiQnMxc3dBcGpPNW5XZ3ZyODQzZzZUanh1UT09Il0sCgogICAgIkBlc2J1aWxkL2ZyZWVic2QteDY0IjogWyJAZXNidWlsZC9mcmVlYnNkLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiZnJlZWJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLTBGZ3ZPSjZVVU1mbHNIU1BMemRmRG5uQkJWb0NEdEJUVnluL01yV2xvVU52cS81U0ZtaDEzbDNkdmdSUGtEaWhSeGI3N1kxN01icWJDQWEyc3RyTVFRPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtYXJtIjogWyJAZXNidWlsZC9saW51eC1hcm1AMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTIta3JvNGMwUDg1R01mRllxVzRUV09wdm1GOHJGU2hiV0duckxxbHpwNFgxVE5XalJZM0pNWVVmREN0T3hQS09JWThCMFdDOEhONTFoR1A0STRoejRBYVE9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1hcm02NCI6IFsiQGVzYnVpbGQvbGludXgtYXJtNjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi0rODlVc1FUZlhkbWpJdlpTNm5Vbk9PTG9YbmtVVEI5aFI1UUFlTHJRZHpPU1dadk5TQVhBdGNSREhXdHFBVXRBbXY3Wk0xV1BPT2VTeER6enpNb2dpUT09Il0sCgogICAgIkBlc2J1aWxkL2xpbnV4LWlhMzIiOiBbIkBlc2J1aWxkL2xpbnV4LWlhMzJAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJpYTMyIiB9LCAic2hhNTEyLXlURWpvYXB5OFVQM3J2OGRCMGlwM0FmTXBSYnloU04zK2hZOG1vL2k0UVhGZUR4bWlZYkVLcDNaUmpCS2NPUDg2MlVhNGIxUERmd2x2YnV3WTdoSUdRPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtbG9vbmc2NCI6IFsiQGVzYnVpbGQvbGludXgtbG9vbmc2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItTmVxcVlrcmNHekZ3aTZDR1JHTk1PaldHR1NZT3Bxd0NqUzlmdmFVbFg1czN6d090bjFxd2cxczJpRTJzdkJlNFEvWU9HMXE2ODc1bGNBb1FLL0Y0VkE9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1taXBzNjRlbCI6IFsiQGVzYnVpbGQvbGludXgtbWlwczY0ZWxAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJub25lIiB9LCAic2hhNTEyLUljdlRsRjlkdExyZkwvTThXZ05JL3FKWUJFTlAzZWtnc0hiWVVJekV6cTVYSnp6VkVWL2ZYWTlXRlBmRUVYbXUzY2sycUpQOExHL3AzUThmN1pjMlhnPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtcHBjNjQiOiBbIkBlc2J1aWxkL2xpbnV4LXBwYzY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAicHBjNjQiIH0sICJzaGE1MTItSE95MGFMVEpUVnRvVGVHWmg0SFNYYU82TTk1cXU0azVsSmNINGd4djU2aWF5Y2Z6MVM4R08vNUpoNlg0WTFZaUkwaDdjUnlMaStIaXhNUis4OHN3YWc9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1yaXNjdjY0IjogWyJAZXNidWlsZC9saW51eC1yaXNjdjY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1pOEpVREF1ZnB6OWpPem80eUlTaENUY1h6UzA3dkVnV3p5WDNOSDJHN0xFRlZnckxFaGp3TDNhakZFNGZaSTNJNFpnaU03SkgzR1E3UmVPYlJPdlNVQT09Il0sCgogICAgIkBlc2J1aWxkL2xpbnV4LXMzOTB4IjogWyJAZXNidWlsZC9saW51eC1zMzkweEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogInMzOTB4IiB9LCAic2hhNTEyLWpGbnUrNlViTGx6SWpQUXBXQ05oNVF0cmNOZk1MamdJYXZud1BRQWZvR3g0cTE3b2NPVTlNc1EyUVZ2Rnh3UW9XcFpUOER2VExvb1R2bU9RWGtPNTFnPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgteDY0IjogWyJAZXNidWlsZC9saW51eC14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItNmUwY3ZYd3pPblZXSkhxK21za1A4RE5TcktCcjFiVUxCdm5GTHBjMUtZK2QraXJaU2daMDJUR3NlNUZzYWZLUzVqZzJlNHBidks2VFBYYUYvQTYrQ0E9PSJdLAoKICAgICJAZXNidWlsZC9uZXRic2QtYXJtNjQiOiBbIkBlc2J1aWxkL25ldGJzZC1hcm02NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibm9uZSIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItdlVua0JZeFpXNGhML2llOTFoU3FhU05qdWxPbllYRTFWU0x1c252SGcydTNqZXdKQnozWXpCOStvQ3c4REFCZVZxWkdnOTR0OXR5WkZvSG1hOGdXWlE9PSJdLAoKICAgICJAZXNidWlsZC9uZXRic2QteDY0IjogWyJAZXNidWlsZC9uZXRic2QteDY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJub25lIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItWEFnOHBJUW41Q3poT0I4b2RJY0FtNDJRc09mYTk4U0JlS1VkbzR4YThPdlg4TGJNWnFFdGdlV0U5UC9XeHQ3TWxHMlFxdmpHdGhzK25xNDhUclVpS3c9PSJdLAoKICAgICJAZXNidWlsZC9vcGVuYnNkLWFybTY0IjogWyJAZXNidWlsZC9vcGVuYnNkLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJvcGVuYnNkIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1DdDJXY0ZFQU5sRkR0cDFuVkFYU05CUER4eVUrajcrdElkLy9pSFhVMmYvbE41QW1PNHpMeWhEY3BSNUN6MXIwOG1WeHp0M0pweXQ0UG1YUTFPNis3QT09Il0sCgogICAgIkBlc2J1aWxkL29wZW5ic2QteDY0IjogWyJAZXNidWlsZC9vcGVuYnNkLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAib3BlbmJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLXhBR0doeU9ROU90bTFYdThOVDFpZkdMbkE2TTNzSnhaNml4eWxiK3ZJVVZ6dnZkNkdPQUxwd1FyWXJ0bFBvdU1xZC92U2JnZWh6NkhhVms0KzdBZmh3PT0iXSwKCiAgICAiQGVzYnVpbGQvc3Vub3MteDY0IjogWyJAZXNidWlsZC9zdW5vcy14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogInN1bm9zIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItTXcrdHp5NHBwNndaRUswK0x3cjc2cFdManJ0am1KeVVCMjN0SEtxRURQNzRSM3E5NWx1WS9iWHFYWmVZbDROWWx2d09xb1JLbEluUWlhbGdDS3k2N1E9PSJdLAoKICAgICJAZXNidWlsZC93aW4zMi1hcm02NCI6IFsiQGVzYnVpbGQvd2luMzItYXJtNjRAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1BVlVQNDI4VlFUU2RkZ3V6OWRPOW5nYitFNWFTY3lnN25PZUpEckYxSFBZdTU1NWdtemEzYkRHTVBobVZYTDhzdkRTb3FQQ3NDUGpiMjY1eUcva0xLUT09Il0sCgogICAgIkBlc2J1aWxkL3dpbjMyLWlhMzIiOiBbIkBlc2J1aWxkL3dpbjMyLWlhMzJAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJpYTMyIiB9LCAic2hhNTEyLWkxc1crMWkrb1d2UXpTZ2ZSY3h4RzJrNEk5bjNPOU5ScXk4VSt1dWdhVDJEeTdrTE85WTd3STcyaGFPYWh4Y2VNWDhoWkF6Z0dvdTFGaG5kUmxkeFJnPT0iXSwKCiAgICAiQGVzYnVpbGQvd2luMzIteDY0IjogWyJAZXNidWlsZC93aW4zMi14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItbk9UMnZaTnc2aEorejQzb1AxU1BlYS9HLzZBYk42WCtiR05oTnVxOE50Ukh5NHdzTWh3NzY1SUtMTm1uamVrN0d2aldCWVE4UTVWQm9ZVEZnOXkxVVE9PSJdLAoKICAgICJAZmxvYXRpbmctdWkvY29yZSI6IFsiQGZsb2F0aW5nLXVpL2NvcmVAMS43LjUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGZsb2F0aW5nLXVpL3V0aWxzIjogIl4wLjIuMTEiIH0gfSwgInNoYTUxMi0xSWg0V1RXeXcwK2xLeUZNY0JIR2JiNVU1RnR1SEp1dWpveXlyNXpUYVdTNUVZTWVUNkpiMkF1RGVmdHNDc0V1Y2hPK21NMmlqNStxOWNyaHlkekxoUT09Il0sCgogICAgIkBmbG9hdGluZy11aS9kb20iOiBbIkBmbG9hdGluZy11aS9kb21AMS43LjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGZsb2F0aW5nLXVpL2NvcmUiOiAiXjEuNy41IiwgIkBmbG9hdGluZy11aS91dGlscyI6ICJeMC4yLjExIiB9IH0sICJzaGE1MTItOWdaU0FJNVhNMzY4ODBQUE1tLy85ZGZpRW5nWW9DNkFtMml6RVMxRkY0MDZZRnNqdnlCTW1lSjJnNFNBanUzeFd3dHV5bk5SRkwyczloZ3hwTEk1U1E9PSJdLAoKICAgICJAZmxvYXRpbmctdWkvcmVhY3QtZG9tIjogWyJAZmxvYXRpbmctdWkvcmVhY3QtZG9tQDIuMS44IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBmbG9hdGluZy11aS9kb20iOiAiXjEuNy42IiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgInJlYWN0IjogIj49MTYuOC4wIiwgInJlYWN0LWRvbSI6ICI+PTE2LjguMCIgfSB9LCAic2hhNTEyLWNDNTJiSHdNL24vQ3hTODdGSDB5V2RuZ0VacmpkdExXL3FWcnVvNjhxZytwcks3WlE0WUdkdXQyR3lEVnBvR2VBWWUvaDg5OXJWZU9WbTZPaTQwazJBPT0iXSwKCiAgICAiQGZsb2F0aW5nLXVpL3V0aWxzIjogWyJAZmxvYXRpbmctdWkvdXRpbHNAMC4yLjExIiwgIiIsIHt9LCAic2hhNTEyLVJpQi95SWg3OHBjSXhsNmxMTUcwQ2dCWEFaMlkwZVZIcU1QWXVndSs5VTBBZVQ2WUJlaUpwZjdsYmRKTkl1Z0ZQNVNJandOUmdvNERoUjFReGkyNkdnPT0iXSwKCiAgICAiQGltZy9jb2xvdXIiOiBbIkBpbWcvY29sb3VyQDEuMS4wIiwgIiIsIHt9LCAic2hhNTEyLVRkNzZxN2o1N28vdExWZGdTNzQ2Y1lBUmZTeXhrOGlFZlJ4ZXdMOWg0T016WWhiVzRUQWNwcGwwbVQ0ZXlxWGRkaDZML2p3b003NW1vN2l4YS9wQ2VRPT0iXSwKCiAgICAiQGltZy9zaGFycC1kYXJ3aW4tYXJtNjQiOiBbIkBpbWcvc2hhcnAtZGFyd2luLWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiAiMS4yLjQiIH0sICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLWltdFEzV01KWGJNWTRmeGIvTmRwNkhCVE5WdFdDVUkwV2RvYnloZUdmNSthZDZ4WDhWSURPOHUyeEU0cWMvZnIwOENLRy83ZERzZUZ0bjZNNmcvcjN3PT0iXSwKCiAgICAiQGltZy9zaGFycC1kYXJ3aW4teDY0IjogWyJAaW1nL3NoYXJwLWRhcndpbi14NjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWRhcndpbi14NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1ZTkVGQUYvNEtRL1BlVzBOK3IrYVZWc29JWTAvcXh4aWtGMlNXZHArTlJrbU1CN3k5TEJaQVZxUTR5aEdDbS9IM0gyNzBPU3lrcW1RTUtMQmhCSkRFdz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjRAMS4yLjQiLCAiIiwgeyAib3MiOiAiZGFyd2luIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi16cWpqbzdSYXRGZkZvUDBNa1E1MWpmdUZaQm5WRTJwUmlheWRLSjFHL3JIWnZuc3JIQU9jUUFMSWk5c0E1Y281eGVuUWRUdWdDdnRiMWN1Zjc4VmY0Zz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4teDY0IjogWyJAaW1nL3NoYXJwLWxpYnZpcHMtZGFyd2luLXg2NEAxLjIuNCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi0xSU9kNXhmVmhsR3dYK3pYdjJOOTNrMHlNT052VWxBTnlsYkp3MWVUYWg4Sy9KdHBpMTVLQytXU2lhWC9uQm1ibTJIeFJNMWdaMG5TZGpTc3JaYkdLZz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm0iOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm1AMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybSIgfSwgInNoYTUxMi1iRkk3eGNLRkVMZGlOQ1ZvdjhlNDRJYTR1MmJ5QStsM1h0c0FqK1E4dGZDd082QlE4aURvallkdm9QTXFzS0RrdW9PbytYNkhaQTBzMHExMUFOTVE4QT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm02NCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybTY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1leGNqWDhEZnNJY0oxMHgxS3pyNFJjV2UxZWRDOVBxdURSUlB4M1lWQ3ZRditVNXA3WWluMnMzMmZ0emlrWG9qYjFQSUZjLzlNdDI4L3kraVJrbGtydz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1wcGM2NCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi1GTXV2R2lqTERZRzZsVytiL1V2eWlsVVd1NUF5dSszcjJkMVM4bm90aUdDSXlZVS83NmVpZzFVZk1ta1o3dndnT3J6S3psUWJGU3VRZmdtN0dZVVBwQT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1yaXNjdjY0IjogWyJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgtcmlzY3Y2NEAxLjIuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1vVkRiY1I0elVDMGNlODJ0ZXViU20reDZFVGl4dEtaQmgvcWJSRUlPY0kzY1VMekR5YjE4U3IvV2N5eDdOUlFlUXpPaUhUTmJaRkYxVXdQUzJzY3lHQT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1zMzkweCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXMzOTB4QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJzMzkweCIgfSwgInNoYTUxMi1xbXA5VnJ6Z1BnTW9HWnlQdnJRSHFrMDJ1eWpBMC9RclRPMjZUcWs2bDRaVjBNUFdJVzZMVGtxT0lvditKMXlFdTdNYkZRYURwd2R3SktoYkp2dVJ4UT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjRAMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi10SnhpaUxzbUhjOUF4MWJ6M29hT1lCVVJUWEdJUkRPREJxaHZlVkhvbnJISjkvK2s4OXFiTGwwYmNKbnMrZTR0NHJ2YU5CeGFFWnNGdFNmQWRxdVBydz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjRAMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLUZWUUh1d3gxSUl1Tm93OVFBYllVekorRW44S2NWbTlMazUrdUdVUUpIYVptTUVDWm1PbGl4OUhuSDduMVRSa1hNUzBwR3hJSm9rSVZCOVN1cVpHR1h3PT0iXSwKCiAgICAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4bXVzbC14NjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wteDY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItK0xweUJrN0w0NFpJWHd6L1ZZZmdsYVgvb2t4ZXpFU2M2VXhEU295bzJLczZKeGM0WTdzR2pwZ1U5czRQTWdxZ2pqMWdaQ3lsVGllTmFtcUExTUY3RGc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4LWFybSI6IFsiQGltZy9zaGFycC1saW51eC1hcm1AMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybSI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItOWRMcXN2d3RnMXV1WEJHWktzeGVtOTU5NSt1anYwc0o2Vmk4d2NUQU5TRnB3Vi9HT05hdDVlQ2t6UW8vMU82elJJa2gwbS84KzVCanJScjdqRFVTWnc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4LWFybTY0IjogWyJAaW1nL3NoYXJwLWxpbnV4LWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm02NCI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1iS1F6YUpSWS9ia1BPWHlLeDVFVnVwN3FrYW9qRUNHNk5MWXN3Z2t0T1pqYVhlY1NBZUNXaVp3d2lGZjMvWStPMUhyYXVpRTNGVnNHeEZnOGMyNHJaZz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGludXgtcHBjNjQiOiBbIkBpbWcvc2hhcnAtbGludXgtcHBjNjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0IjogIjEuMi40IiB9LCAib3MiOiAibGludXgiLCAiY3B1IjogInBwYzY0IiB9LCAic2hhNTEyLTd6em53TmFxVzZZdHNmckdHREE2QlJrSVNLQUFFMUpvMFFkcE5ZWE5NSHUyKzBkVHJQZmxUTE5rcGM4bDdNVVA1TTE2WkpjVXZ5c1ZXV3JNZWZacXVBPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eC1yaXNjdjY0IjogWyJAaW1nL3NoYXJwLWxpbnV4LXJpc2N2NjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXJpc2N2NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi01MWdKdUxQVEthN3BpWVBhVnM4R21CeW83L1U3LzdUWk9xK2NuWEpJSFpLYXZJUkhBUDc3ZTNOMkhFbDNkZ2lxZEQvdzB5VWZpSm5JSTc3UHVEREZkdz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGludXgtczM5MHgiOiBbIkBpbWcvc2hhcnAtbGludXgtczM5MHhAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXMzOTB4IjogIjEuMi40IiB9LCAib3MiOiAibGludXgiLCAiY3B1IjogInMzOTB4IiB9LCAic2hhNTEyLW5RdENrMFBkS2ZobzNlQzVNcmJRb2lnSjJnZDFDZ2RkVU1rYWJVaityQmV2czh0WjJjVUxPeDQ2RTdveVgrMDRXR2ZBQmdJd21NQzBWcWllVGlSNGpnPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eC14NjQiOiBbIkBpbWcvc2hhcnAtbGludXgteDY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLU1FemQ4SFBLeFZ4VmVud0FhK0pSUHdFQzdRRmpvUFd1UzVOWm5CdDZCM3B1N0VHMkdlMGlkMW9MSFpwUEpkbjNPUUsrQlFEaXc5elN0aUhCVEpRUVFRPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eG11c2wtYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGludXhtdXNsLWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItZnBySlI2R3RSc010Nkt5ZnE0NElzQ2hWWmVHTjk3Z1REMzMxd2VSMWV4MWMxcnlwREVBQk42VG0yeGExd0U2bFliNURkRW5rMDNOWlBxQTdJZDIxeWc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4bXVzbC14NjQiOiBbIkBpbWcvc2hhcnAtbGludXhtdXNsLXg2NEAwLjM0LjUiLCAiIiwgeyAib3B0aW9uYWxEZXBlbmRlbmNpZXMiOiB7ICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXhtdXNsLXg2NCI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSmc4d05UMU1Vekl2aEJGeFZpcXJFaFdER3pxeW1vM3NWN3o3WnNhV2JaTkRMWFJKWm9SR3JqdWxwNjBZWXRWNHdmWThWSUtjV2lkam9qbExjV3JkOFE9PSJdLAoKICAgICJAaW1nL3NoYXJwLXdhc20zMiI6IFsiQGltZy9zaGFycC13YXNtMzJAMC4zNC41IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvcnVudGltZSI6ICJeMS43LjAiIH0sICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1PZFdURWlWa1kyUEh3cWtiQkk4ZnJGeFFRRmVrSGFTU2tVSUprd3pjbFdaZTY0TzFYNFVsVWpxcXFMYVBiVXBNT1FrNkZCdS9IdGxHWE5ibElzMGh1dz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzItYXJtNjQiOiBbIkBpbWcvc2hhcnAtd2luMzItYXJtNjRAMC4zNC41IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1XUTNBZ1dDV1lTYjJ5dCtJRzhtbkM2SmRrOVdoczdPMGd4cGhibHNMdmRoU3BTVHRtdTY5WkcxR2tiNk51dnhzTkFDd2lQVjZjTlNaTnp0MEtQc3c3Zz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzItaWEzMiI6IFsiQGltZy9zaGFycC13aW4zMi1pYTMyQDAuMzQuNSIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAiaWEzMiIgfSwgInNoYTUxMi1GVjltLzdObWVDbVNIREQ1ajQrNHBOSThDcDNhVytKdkxvWGNUVW8wSXF5alNmQVpKOGRJVW1pangxcWFKc0lpVStIb3N3NnhNNUtpakFXUkpDU2dOZz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzIteDY0IjogWyJAaW1nL3NoYXJwLXdpbjMyLXg2NEAwLjM0LjUiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi0rMjlZTXNxWTIvOWVGRWlXOTNlcVdudUxjV2N1Zm93WGV3d1NOSVQ2VXdaZFVVQ3JNM29Gak1XSC9aNi9UTW1iNGhsRmVubWZBVmJwV2V1cDJqcnlDdz09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogWyJAanJpZGdld2VsbC9nZW4tbWFwcGluZ0AwLjMuMTMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjIjogIl4xLjUuMCIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjQiIH0gfSwgInNoYTUxMi0ya2t0LzduaUo2TWdFUHhGMGJZZFE2ZXRaYUErZlF2RGNMS2NraHkxeUlRT3phb0tqQkJqU2o2My9hTFZqWUUzcWhSdDVkdk0rdVV5ZkNnNlVLQ0JiQT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3JlbWFwcGluZyI6IFsiQGpyaWRnZXdlbGwvcmVtYXBwaW5nQDIuMy41IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogIl4wLjMuNSIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjQiIH0gfSwgInNoYTUxMi1MSTl1LytsYVlHNERzMVRES1NKVzJZUHJJbGNWWU93aTJmVUM2eEI0M2x1ZUNqZ3hWNGxmZk9DWkN0WUZpSDZUTk9YK3RRS1h4OTdUNElLSGJoeUhFUT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3Jlc29sdmUtdXJpIjogWyJAanJpZGdld2VsbC9yZXNvbHZlLXVyaUAzLjEuMiIsICIiLCB7fSwgInNoYTUxMi1iUklTZ0NJalAyMC90YldTUFdNRWk1NFFWUFJaRXhrdUQ5bEpMK1VJeFVLdHdWSkE4d1cxVHJiMWpNczFSRlhvMUNCVE5aLzVocEM5UXZtS1dkb3BLdz09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3NvdXJjZS1tYXAiOiBbIkBqcmlkZ2V3ZWxsL3NvdXJjZS1tYXBAMC4zLjExIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogIl4wLjMuNSIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjUiIH0gfSwgInNoYTUxMi1aTXAxVjhaRmNQRzVkSVduUUxyM05TSTFNaUNVN1VFVGRTL0EwRzhWL1hXSHZKdjNac0ZxdXRKbjFZNVJQbUFQWDZGM0JpRTM5N09xdmVVLzlOQ3VJQT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3NvdXJjZW1hcC1jb2RlYyI6IFsiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjQDEuNS41IiwgIiIsIHt9LCAic2hhNTEyLWNZUTkzMTBncnF4dWVXYmwrV3VJVUlhaVVhRGNqN1dPcTVmVmhFbGpOVmdSZk9VaFk5ZnkyelR2Zm9xV3NuZWJoOFNsNzBWU2NGYklDdkpuTEtCME9nPT0iXSwKCiAgICAiQGpyaWRnZXdlbGwvdHJhY2UtbWFwcGluZyI6IFsiQGpyaWRnZXdlbGwvdHJhY2UtbWFwcGluZ0AwLjMuMzEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvcmVzb2x2ZS11cmkiOiAiXjMuMS4wIiwgIkBqcmlkZ2V3ZWxsL3NvdXJjZW1hcC1jb2RlYyI6ICJeMS40LjE0IiB9IH0sICJzaGE1MTItenpOUitTZFFTREp6Yzhqb2FlUDhRUW9DUXI4TnVZeDJkSUl5dGwxUWVCRVpISjl1VzZoZWJzcllnYno4aEp3VVFhbzNUV0NNdG1mVjhOdTF0d09MQXc9PSJdLAoKICAgICJAbmFwaS1ycy93YXNtLXJ1bnRpbWUiOiBbIkBuYXBpLXJzL3dhc20tcnVudGltZUAxLjEuNCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAdHlieXMvd2FzbS11dGlsIjogIl4wLjEwLjEiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQGVtbmFwaS9jb3JlIjogIl4xLjcuMSIsICJAZW1uYXBpL3J1bnRpbWUiOiAiXjEuNy4xIiB9IH0sICJzaGE1MTItM05RTk5nQTFZU2xKYi9rTUgxaWxkQVNQOUhXNy83a1luUkkyc3pXSmFvZmFTMWhXbWJHSTRIK2QzKzIyYUd6WFhOOUlKK24rR2lGVmNHaXBKUDE4b3c9PSJdLAoKICAgICJAbmV4dC9lbnYiOiBbIkBuZXh0L2VudkAxNi4yLjYiLCAiIiwge30sICJzaGE1MTItZ2Q4SG9ITjR1Zmo3M1dtUjNKbVZvbHJwSlI0N0lMSzZMb3VQNXhFbFBnbGFWeGlyNmUxYTdWenZUdkRXa09vUFhUOXJra1R6eUN4QnU0eWVaZlp3Y3c9PSJdLAoKICAgICJAbmV4dC9zd2MtZGFyd2luLWFybTY0IjogWyJAbmV4dC9zd2MtZGFyd2luLWFybTY0QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVpKR2trY05mWWdyck1rcU9kWjd6b0xhMVRPeTBxcGNNZmsvejRNaC9GS1V6NDBnVk8rSE5RV3FtTHhmNjdaNVdCNjREUnAwZGhFYnlIZmVsKzZzSlVnPT0iXSwKCiAgICAiQG5leHQvc3djLWRhcndpbi14NjQiOiBbIkBuZXh0L3N3Yy1kYXJ3aW4teDY0QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi12L1lMQkhJWTEzMkNlZDNwdUJKN1lKS3cxbHFzQ3JnY05vMmFSSmxDRXlRcnJDZVJKbHZHbG5teGhQeE5RSTNLRTNOMURONXI5VFBOUHZrYTNucTVSUT09Il0sCgogICAgIkBuZXh0L3N3Yy1saW51eC1hcm02NC1nbnUiOiBbIkBuZXh0L3N3Yy1saW51eC1hcm02NC1nbnVAMTYuMi42IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1SUE92cWxZQmJjUWprejlWUVFEWjJUMmJBUklqWFpWMUtGbHQrVjJNcjZTVy9lNEk5ZmNLc2FBMGhkeWYyRkhvVGxzVjJ4bkJkNVk5MTJyUC8xQ2U2dz09Il0sCgogICAgIkBuZXh0L3N3Yy1saW51eC1hcm02NC1tdXNsIjogWyJAbmV4dC9zd2MtbGludXgtYXJtNjQtbXVzbEAxNi4yLjYiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVVSVVR1MStkTWt4SnNQRmdtK09lRXZxOXdmNXN1ancwRXZnWXk4MFRER0hUU0xUbklIZXFiMEV1OEEzc0M5NUlSZ2plalFMK2tDNG13KzR5UHhpQVhBPT0iXSwKCiAgICAiQG5leHQvc3djLWxpbnV4LXg2NC1nbnUiOiBbIkBuZXh0L3N3Yy1saW51eC14NjQtZ251QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLURPajE4Mm1QVjhHM1VrcmF5TG9SRU01WUVZSStEazV3djdPeDl4bDFmRmliQUVMRXNGRDBsRFBmSEllSUxsdXRNTWZkeWhsellQRUxHM3BldUthdXJ3PT0iXSwKCiAgICAiQG5leHQvc3djLWxpbnV4LXg2NC1tdXNsIjogWyJAbmV4dC9zd2MtbGludXgteDY0LW11c2xAMTYuMi42IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSEtRNVNQL1YvdWI3M1V2RjduL3plSmx4azJrTG10TDdXenJnNFdmbWtqbU5vczVvbkoydEt1N3laT1BkTDE4QTZTdmZuM21heDI5eW0rcnk3TmtLNGc9PSJdLAoKICAgICJAbmV4dC9zd2Mtd2luMzItYXJtNjQtbXN2YyI6IFsiQG5leHQvc3djLXdpbjMyLWFybTY0LW1zdmNAMTYuMi42IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1MWlhwVGxQeVM1djdIaFNtbnZzTEdQM2lJWWdZT0JuYzhyOEFybFQ1NXNHSFY4OWJSMkhsRGRCaldRK1BZNlNKTW1rOFR1VkdGdXhhbG5QM2svMER3Zz09Il0sCgogICAgIkBuZXh0L3N3Yy13aW4zMi14NjQtbXN2YyI6IFsiQG5leHQvc3djLXdpbjMyLXg2NC1tc3ZjQDE2LjIuNiIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLUYwKzRpMGg5SjZDNGVFM0VBUFdzb0NrN1VXL2Riek9qeXp4WTBxbkRVT1lGdTZGRm1kWjZsOTcvWGRWMy9OejNWWXlPN1VXanlFSlVYa0dxY29YZk1BPT0iXSwKCiAgICAiQG94Yy1wcm9qZWN0L3R5cGVzIjogWyJAb3hjLXByb2plY3QvdHlwZXNAMC4xMzAuMCIsICIiLCB7fSwgInNoYTUxMi1pYkQydXN4OUpSdTdmNXB1MnRNS01JNGNwQTROZ1hKUW9ZUlA0cFE3UHhtbjFsNmsvNTNxV3RRV1pheWhZeTNYNFFaa3Q5ME90K21KRWFlWG91aW82UT09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWFuZHJvaWQtYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLWFuZHJvaWQtYXJtNjRAMS4wLjEiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItZkpJM0kwcjNDM09qL3pkQkNwYUNtQlJaWWYwN3hwYXE0eUNmRERvU0ZtK2JlV056YklsMjZwdVc4UnJhVWR1Z29Kdy85NXplck5PbjZqYXNBaHpTbWc9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1kYXJ3aW4tYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLWRhcndpbi1hcm02NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLWNLbkFoV0VzVjdUUGNBLzVFQXRlRHA2S2NKWkJRMkcrQnFFN3pheU1NaTdrTXZ3UnNidjdXVDlhT25uMFdObDRTS0VJZjQzdmpTMzFpVVB1ODBuelhnPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NCI6IFsiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1ZS3JWd1FqSVJCUG8rNUcvdTAzd0dqYmR5NHE3cHl6Q2U5M0RLOVZKN3prVm1lZzhMSjdHYmdzaUhXZFI0eFNvZTRDQVhSRDdCY2pnYnRyNjRia1hOZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWZyZWVic2QteDY0IjogWyJAcm9sbGRvd24vYmluZGluZy1mcmVlYnNkLXg2NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItei9vQnNSRW80NlNzRnFCd1l0RmUwa3BKZUJpakFUNDhPL1dYTEk0c3VpQ0xCa3IwM1JUdFRKTUN6U2REZDJ6bmxoOFZKaXpMMDlYVmtRZ2s4SVpvbnc9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmQDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItaWs4cTdHTTExenh2WXhGYzJQZURjVDZUQnZoQ1FNYVV4ZnBoL001bDlzS3VUcy9TamczTCtCeXcwRjd3MFpWTEJabXgzMFArZ0cwRUN6ek4rTUZjbVE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1nbnUiOiBbIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LWFybTY0LWdudUAxLjAuMSIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItUW9TeDJFa3lycmRaNmtjeUU4c3RxWjYydDBZcmE4RnM1aWE5bE94SnJoNlRNUUpLN2dRS21zY2RUSGY3cE9YS1JFS3JWd090SmNRRzNxVlNmYzg2NkE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsQDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi11d053RnB3S2VOaVphd2ZBV0JnZzBWSXp0UFRWM2loaGgxdlYzMzRoOWl2bk5Mb3J4blFNVTZGejh3RzFaYjRRaDlMQzEvTWtjeVQzWWxEWEczUnNnZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXBwYzY0LWdudSI6IFsiQHJvbGxkb3duL2JpbmRpbmctbGludXgtcHBjNjQtZ251QDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi16WTFidWw3T1dyN0RGQmlKKyt3b2ZYdm5yOEI0NWNlM1FzUVVoS3JJaFhzeWdBaDdiVGt3eWVNMWJpMWEyZzVDL3lDL044VFp5R0RFb01mbS9sOW1wZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXMzOTB4LWdudSI6IFsiQHJvbGxkb3duL2JpbmRpbmctbGludXgtczM5MHgtZ251QDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJzMzkweCIgfSwgInNoYTUxMi0wZnJsc1QvZjRGdDZJN1NNRVNUS25GM2Nac2RpY1FuMWRDTWtGL2pUOXdETEUrZ0dvaVFmdjFubVQ5ZStzN3MvZmVrdnZ5NnRaTTJqSHZJMnRrYkpEUT09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1nbnUiOiBbIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1nbnVAMS4wLjEiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1YQUJWbUdwOVRnMFdzcFRWdndkdVRjNGZwcXk2Sm5BVXJTUWU2T3V5cUQvMDNuSTdyME85T1dVa01Jd0ZyaktBSXFvbHZxb0E0WnJKcHBnd0UwR3htdz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1tdXNsIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC14NjQtbXVzbEAxLjAuMSIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLWJWNGZ6c3d1elZjS0Q5MG8vVk02UXFLeG54bERxMGcyQklTRExOVm14cm5ocHYxRERieVBoQ0lqWWZ2ellMVitNdmtLS25RdDJRNkFPODZTRUJVTFVRPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctb3Blbmhhcm1vbnktYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLW9wZW5oYXJtb255LWFybTY0QDEuMC4xIiwgIiIsIHsgIm9zIjogIm5vbmUiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLS9NaDBaaHEzT1A3ZlZzMGtjUUhaUDZsWkV0aE1HVGFTZjhVQlFZU0ZFWkRXR1hYbEVDK25KNkVxZW5hSzJ0NExCWE1lM0ErSy9HMkJWWFhkdE9yNFBRPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctd2FzbTMyLXdhc2kiOiBbIkByb2xsZG93bi9iaW5kaW5nLXdhc20zMi13YXNpQDEuMC4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvY29yZSI6ICIxLjEwLjAiLCAiQGVtbmFwaS9ydW50aW1lIjogIjEuMTAuMCIsICJAbmFwaS1ycy93YXNtLXJ1bnRpbWUiOiAiXjEuMS40IiB9LCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItKzF4YzlYNDVsOHVmc0JBbTZHanZ4MnFEUklZOWxUVnQwY2dXTmNKKzFnZGhYdmtieGVQQTYweVJUd1NUdVhMMDlDTWh5Sm1qcFY3RTNOb3l4YnFGUVE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjIjogWyJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjQDEuMC4xIiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi0xRCtVcVpkZm51UitKeTFHZ01Kd2k4NWJENDBIMjF1Tm1PUFJXUWh3NG9SU3VvbFovQjVyaXhaNDVESzJLWE9UQ3ZtVkNlY2F1V2dFaGJ3OGJJN3RPdz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLXdpbjMyLXg2NC1tc3ZjIjogWyJAcm9sbGRvd24vYmluZGluZy13aW4zMi14NjQtbXN2Y0AxLjAuMSIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLUlOQXljYVd1aGxPSzN3azRtUkhHc2Rnd1lXbWQ5Y0NoZFBkRTlid1dteTZybjlWcVZOWU5GR2hPZFhyb2ZYVXh3SEluY1NpUE5iOHRObThrbkRWSWVRPT0iXSwKCiAgICAiQHJvbGxkb3duL3BsdWdpbnV0aWxzIjogWyJAcm9sbGRvd24vcGx1Z2ludXRpbHNAMS4wLjEiLCAiIiwge30sICJzaGE1MTItMmo5Ykd0NUpoOGhqK3ZQdGd6UHRsNzJqMHlSeEhBeXVtb282VE5mQWpzTEIwNFV0cFN2UGJQY0RjQk14ejduKzlDWUIwYzFHeFFGeFlSZzJqaW1xR3c9PSJdLAoKICAgICJAc3RhbmRhcmQtc2NoZW1hL3NwZWMiOiBbIkBzdGFuZGFyZC1zY2hlbWEvc3BlY0AxLjEuMCIsICIiLCB7fSwgInNoYTUxMi1sMmFGeTVqQUxobmlHNUhncXJENmpYTGkvclVXckt2cU4vcUp4NnlvSnNnS2hibFZkK2lxcVU0UkNYYXZtL2pQaXR5RG81VEN2S01ucGpLbk9yaXkwdz09Il0sCgogICAgIkBzd2MvaGVscGVycyI6IFsiQHN3Yy9oZWxwZXJzQDAuNS4xNSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi44LjAiIH0gfSwgInNoYTUxMi1KUTVUdU1pNDVPd2k0L0JJTUFKQm9TUW9PSnUxMm9Pay9nQURxbGNVTDlKRWRIQjh2eWpVU3N4cWVOWG5tWEhqWUtNaTJXY1l0ZXpHRUVocVVJL0UyZz09Il0sCgogICAgIkB0YWJieV9haS9oaWpyaS1jb252ZXJ0ZXIiOiBbIkB0YWJieV9haS9oaWpyaS1jb252ZXJ0ZXJAMS4wLjUiLCAiIiwge30sICJzaGE1MTItcjViQ2xLcmNJdXNEb28wNDlkU0w4Q2F3bkhSNm1SZER3aGxRdUlnWlJOdHk2OHEweDhrM0xmMUJ0UEFNeFJmL0dnbkhCbklPNHVqZDMrR1FkTFd6eFE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvbm9kZSI6IFsiQHRhaWx3aW5kY3NzL25vZGVANC4zLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvcmVtYXBwaW5nIjogIl4yLjMuNSIsICJlbmhhbmNlZC1yZXNvbHZlIjogIl41LjIxLjAiLCAiaml0aSI6ICJeMi42LjEiLCAibGlnaHRuaW5nY3NzIjogIjEuMzIuMCIsICJtYWdpYy1zdHJpbmciOiAiXjAuMzAuMjEiLCAic291cmNlLW1hcC1qcyI6ICJeMS4yLjEiLCAidGFpbHdpbmRjc3MiOiAiNC4zLjAiIH0gfSwgInNoYTUxMi1hRmI0Z1VoRk9nZGg5QVhvNEl6QkVPekJra0F4bTlWaWd3REpuTUlZdjNsY2ZYQ0pWZXNOZmJFYUJsNEJOZ1ZSeWlkOTJBbWR2aXF3QlVCUktTZVkzZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZSI6IFsiQHRhaWx3aW5kY3NzL294aWRlQDQuMy4wIiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQHRhaWx3aW5kY3NzL294aWRlLWFuZHJvaWQtYXJtNjQiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtZGFyd2luLXg2NCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtZnJlZWJzZC14NjQiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybS1nbnVlYWJpaGYiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybTY0LWdudSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtbXVzbCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LWdudSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LW11c2wiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLXdhc20zMi13YXNpIjogIjQuMy4wIiwgIkB0YWlsd2luZGNzcy9veGlkZS13aW4zMi1hcm02NC1tc3ZjIjogIjQuMy4wIiwgIkB0YWlsd2luZGNzcy9veGlkZS13aW4zMi14NjQtbXN2YyI6ICI0LjMuMCIgfSB9LCAic2hhNTEyLUY3SFpHQmVOOUkwL0F1dUpTNVB3Y0Q4eGF5eDVyaTVHaGpZVURCRVZZVWtleHlBL2dpd2JETmpSVnJ4U2V6RTNUMjUwT1UySy93cC9sdFd4M1VPZWZnPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWFuZHJvaWQtYXJtNjQiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1hbmRyb2lkLWFybTY0QDQuMy4wIiwgIiIsIHsgIm9zIjogImFuZHJvaWQiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVRKUGlxNjd0S2xMdU9iUDZSa3d2VkdEb3hDTUJWdERnS2tMZmEvdXlqNy9GeXh2UXdIUytVT25WclhYZ2JFc2ZVYU1naVZ2QzRLYkpuUnIyNmhvNE5nPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NCI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NEA0LjMuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLW9NTi9XWlJiK1NPMzdCbVVFbEVnZUVXdVU4RS9IWFJraU9EeEp4TGUxVVRIVlhMcmRWU2dmYUpWN3BTbGhSR01TT2lYTHV4VElqZnNGM3dZdno4Y2dRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi14NjQiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1kYXJ3aW4teDY0QDQuMy4wIiwgIiIsIHsgIm9zIjogImRhcndpbiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLU42Q1VtdTRhNmJLVkFEZnc3N3AraXc2WWQ5UTNPQmhlMHZlYURYK1FhemZ1VllsUXNIZkRneEJyc2pRL0lXK3p5d0w4bVRyTmQwU2RKVC96Z3R2TWRBPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWZyZWVic2QteDY0IjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtZnJlZWJzZC14NjRANC4zLjAiLCAiIiwgeyAib3MiOiAiZnJlZWJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLXpETDVoQmtRZEg1QzZNcHFiSzNnUUFnUDgwdHNNd1NJMjZ2ak96akp0TkNNVW8wbEZnT0l0ekhLQkl1cE9aTlF4dDNvdVBIN1JQaHZOaGlUZkNlNUNRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybS1nbnVlYWJpaGYiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC1hcm0tZ251ZWFiaWhmQDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItUjA2SGROaTdBN09Fb01zZjZkNHRqWjcxUkNXblpRUEhqMm1ub3RTRlVSak5MZEJDK2NJZ1hRN2w4MUNxZW9pUWZ0amY2T09ibHhYTUluTWdOMlZ6TUE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtZ251IjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtZ251QDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1xVEpIRUxYOGpldGpoUlFIQ0xpbGtWTG15YnB6TlFBdGFJL2dhb1ZvaWRuL3VmYk5EYkFvOEtsSzJKK3lQb2M4d1F4dkR4Q21oLzVscjhuQzErbFRiZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC1hcm02NC1tdXNsIjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtbXVzbEA0LjMuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItWjZzdWtpUXNuZ25XTytsMzlYNHBQYmlXVDgxSUMrUExLRitQSHhJbHlaYkdOYjlNT0RmWWxYRVZsRnZlajVCT1pJbldYMDFrVnl6ZUx2SHNYaGZjelE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LWdudSI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LXg2NC1nbnVANC4zLjAiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1EUk5kUVJwU0d6UkdmQVJWdVZreHZNOFExMm5oMTlsNEJGL0c3ekdBMW9lKzl3Y0M2c2FGQkhUSVNycEljS3poaVh0U3JsU3JsdUNmdk11bGVkb0NUUT09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC14NjQtbXVzbCI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LXg2NC1tdXNsQDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItWjBJQURiRG84Ymg2STdoMklRTXg2MDFBZFhCTGZGcEVkVW90ZnQ4NmV2ZC84WlBmbFplOUNPUE84UTF2dytwZkxXSVVvOXpOL0pHWnZ3dUFKcWR1cWc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kiOiBbIkB0YWlsd2luZGNzcy9veGlkZS13YXNtMzItd2FzaUA0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAZW1uYXBpL2NvcmUiOiAiXjEuMTAuMCIsICJAZW1uYXBpL3J1bnRpbWUiOiAiXjEuMTAuMCIsICJAZW1uYXBpL3dhc2ktdGhyZWFkcyI6ICJeMS4yLjEiLCAiQG5hcGktcnMvd2FzbS1ydW50aW1lIjogIl4xLjEuNCIsICJAdHlieXMvd2FzbS11dGlsIjogIl4wLjEwLjEiLCAidHNsaWIiOiAiXjIuOC4xIiB9LCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItSE5aR09VeEVtRWxrc1lSN1M2c0M1alRlTkdwb2JBc3k5dTdHdTBBc2tKOC8yMEZSOUdxZWJVeUIrSEJjVS9heDZCSHVpdUppK09kYTRCK1lYNkgxeUE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2luMzItYXJtNjQtbXN2YyI6IFsiQHRhaWx3aW5kY3NzL294aWRlLXdpbjMyLWFybTY0LW1zdmNANC4zLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVBlK1JQVlRpMVQrcXltdXVScGNkdndTVlpqbmxsL2Y3bjhnQnhNTWgzeExUY3RNREtxcGRmR2ltYk15aW9xdExoVVlaeGRKOXdHTmhWN01LSHZnWnNRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLXdpbjMyLXg2NC1tc3ZjIjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtd2luMzIteDY0LW1zdmNANC4zLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1NdnJmMmtYVy95ZVcvT1RlelpsQ0dPaXJYUmNVdUxJQngvNVkxMkJhUE03d0pvcnlHNmRmUy9OSkw4YUJQcXRURXgvVm00VDR2S3pGVWNLRFQrVEtVQT09Il0sCgogICAgIkB0YWlsd2luZGNzcy9wb3N0Y3NzIjogWyJAdGFpbHdpbmRjc3MvcG9zdGNzc0A0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYWxsb2MvcXVpY2stbHJ1IjogIl41LjIuMCIsICJAdGFpbHdpbmRjc3Mvbm9kZSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUiOiAiNC4zLjAiLCAicG9zdGNzcyI6ICJeOC41LjEwIiwgInRhaWx3aW5kY3NzIjogIjQuMy4wIiB9IH0sICJzaGE1MTItSm0wNVRqeCs5eUNMR3Y1cXcxYys4NFBzZHM4TW55ckVRWUNCK0ZGazJsZ0dpVWpsUnFkeGtlNG1WVHVZcmoyeG5WWnFLaW0yQXByNXlTdVFSWUF3L3c9PSJdLAoKICAgICJAdHlieXMvd2FzbS11dGlsIjogWyJAdHlieXMvd2FzbS11dGlsQDAuMTAuMiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi40LjAiIH0gfSwgInNoYTUxMi1Sb0J2SjJYMHd1S2xXRklqcndmZkd3MUlxWkhLUXF6SWNoS2FhZFpaZm5OcHNBWXAybU0waDM2SnRQQ2pOREFIR2dZZXovMTV1TUJwZkd3Y2hoaU1nZz09Il0sCgogICAgIkB0eXBlcy9jaGFpIjogWyJAdHlwZXMvY2hhaUA1LjIuMyIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAdHlwZXMvZGVlcC1lcWwiOiAiKiIsICJhc3NlcnRpb24tZXJyb3IiOiAiXjIuMC4xIiB9IH0sICJzaGE1MTItTXc1NThvZUE5ZkZidjY1L3k0bUh0WERzOWJQbkZNWkFML2p4ZFBGVXBPSEhJWFg5MW1jZ0VIYlM1TGFocitwd1pGUjhBN0dRbGVSV2VJNmNHRkMyVUE9PSJdLAoKICAgICJAdHlwZXMvZGVlcC1lcWwiOiBbIkB0eXBlcy9kZWVwLWVxbEA0LjAuMiIsICIiLCB7fSwgInNoYTUxMi1jOWg5ZFZWTWlnTVBjNGJ3VHZDNWR4cXRxSlp3UVBlUHNXalBscFNPbm9qYm9yNnBHcWRrNTQxbGZBN0FxRlFyNXBCMUJSZHEwanVZOWRiODFCd3lGdz09Il0sCgogICAgIkB0eXBlcy9lc3RyZWUiOiBbIkB0eXBlcy9lc3RyZWVAMS4wLjkiLCAiIiwge30sICJzaGE1MTItR2hkUGd5MWVsNC9JbVAwNVgwNVV3NGN3Mi9NOTNCQ1VtbkV2V1pOU3RsQ3pFS01FNEZraytZcG9BNU9pSE5RbW9TN0NhZmI4WGEzUHlhOG0xUXJ6ZWc9PSJdLAoKICAgICJAdHlwZXMvbm9kZSI6IFsiQHR5cGVzL25vZGVAMjIuMTkuMTkiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidW5kaWNpLXR5cGVzIjogIn42LjIxLjAiIH0gfSwgInNoYTUxMi1keWgveE8yRmg1YllyZldhYXFHclJRUUdrTmRtWXc2QW1hQVV2WWVVTU5UV1F0dmI3OTZpa0xkbVRjaFJtT2xPaUlKMVREWGZXZ1Z4MVFrVWxRNkhldz09Il0sCgogICAgIkB0eXBlcy9yZWFjdCI6IFsiQHR5cGVzL3JlYWN0QDE5LjIuMTUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiY3NzdHlwZSI6ICJeMy4yLjIiIH0gfSwgInNoYTUxMi1lUndjR05IdmUrRThxdEVRU1NSbDZ1cmgrckZvcDR2OGdtNk84ckd2MjVDb2RidkZkTGpBMXZWUTFLa2lGRTB3MFVQT25iOHREaUZLTDVscDBydFk1UT09Il0sCgogICAgIkB0eXBlcy9yZWFjdC1kb20iOiBbIkB0eXBlcy9yZWFjdC1kb21AMTkuMi4zIiwgIiIsIHsgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJAdHlwZXMvcmVhY3QiOiAiXjE5LjIuMCIgfSB9LCAic2hhNTEyLWpwMkwvZVk2Zm4rS2dWVlFBT3FZSXRiRjBWWS9ZQXBlNU16MkYwYXlrU084Z3gzMWJZQ1p5dlNlWXhDSEt2ekhHNWVaamMrenlhUzVCckJXeWEyK2tRPT0iXSwKCiAgICAiQHZpdGVzdC9leHBlY3QiOiBbIkB2aXRlc3QvZXhwZWN0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBzdGFuZGFyZC1zY2hlbWEvc3BlYyI6ICJeMS4xLjAiLCAiQHR5cGVzL2NoYWkiOiAiXjUuMi4yIiwgIkB2aXRlc3Qvc3B5IjogIjQuMS42IiwgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAiY2hhaSI6ICJeNi4yLjIiLCAidGlueXJhaW5ib3ciOiAiXjMuMS4wIiB9IH0sICJzaGE1MTItN0VIRHF1UHRoQUxTVjBqaGhqZ0VXOEZYYXZpTXg3clNxdThXNm9xQ29BdU9oS292ODE0UDk5UURWMXB4TUEzUVB2MjFZdWR2Sm5nSWhqck5JNG9wTGc9PSJdLAoKICAgICJAdml0ZXN0L21vY2tlciI6IFsiQHZpdGVzdC9tb2NrZXJANC4xLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHZpdGVzdC9zcHkiOiAiNC4xLjYiLCAiZXN0cmVlLXdhbGtlciI6ICJeMy4wLjMiLCAibWFnaWMtc3RyaW5nIjogIl4wLjMwLjIxIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIm1zdyI6ICJeMi40LjkiLCAidml0ZSI6ICJeNi4wLjAgfHwgXjcuMC4wIHx8IF44LjAuMCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIm1zdyIsICJ2aXRlIl0gfSwgInNoYTUxMi1NQ0ZjNjNjek1qRUluT2xjWTJjcFFDdkNOK0tnYkFuKzYweHU5Y01nUDRzS2FMQzVKTkFLdzdKSDhRZEFub0FDODhoVzFJaVNOWitHZ1ZYbE4xVWNNUT09Il0sCgogICAgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6IFsiQHZpdGVzdC9wcmV0dHktZm9ybWF0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRpbnlyYWluYm93IjogIl4zLjEuMCIgfSB9LCAic2hhNTEyLWg1U3hEL0l6TmhaWW5yU1pSc1VaUUlDK3ZEMEdZOGNVdnEwaXdzbWtGS2l4UkNLTExXcUNYYS9GSVE0UzFSK3NJK1BHb29qa0hzZE5yYlppTTlRcGd3PT0iXSwKCiAgICAiQHZpdGVzdC9ydW5uZXIiOiBbIkB2aXRlc3QvcnVubmVyQDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAicGF0aGUiOiAiXjIuMC4zIiB9IH0sICJzaGE1MTItbk9QQ21uMit5RDBaTm1LZHNYR3YvVXhNTVdiTXVLZUQ2R3lZbmNOd2RrWUR4cFF2clBTS1lqMnJXdURqQzJZNGI2dzZoamlwNWRCS0Z6RVV1WmUzdkE9PSJdLAoKICAgICJAdml0ZXN0L3NuYXBzaG90IjogWyJAdml0ZXN0L3NuYXBzaG90QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6ICI0LjEuNiIsICJAdml0ZXN0L3V0aWxzIjogIjQuMS42IiwgIm1hZ2ljLXN0cmluZyI6ICJeMC4zMC4yMSIsICJwYXRoZSI6ICJeMi4wLjMiIH0gfSwgInNoYTUxMi1ZaHNkRTZ4QVZmVERtemp4TDJaRFV2amorWnNneU9LZStUZFF6cWtENzJ3SU9tSGthOE51R1E2TnBUTlp2OUQyWjYzZmJ3V0tKUGVWcEV3NEVRZ1l4dz09Il0sCgogICAgIkB2aXRlc3Qvc3B5IjogWyJAdml0ZXN0L3NweUA0LjEuNiIsICIiLCB7fSwgInNoYTUxMi1KRkt4TXg2dWRod0toL0xkbzI3MGUxN1FYNzEwdmd1bk1rdVBBdlhqSFN2QzZvcUxXQUhoVmhqZy9JNzFxMHUwQ0JTRXJJT0RWMUtqdjBGUU5TV2pkZz09Il0sCgogICAgIkB2aXRlc3QvdXRpbHMiOiBbIkB2aXRlc3QvdXRpbHNANC4xLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHZpdGVzdC9wcmV0dHktZm9ybWF0IjogIjQuMS42IiwgImNvbnZlcnQtc291cmNlLW1hcCI6ICJeMi4wLjAiLCAidGlueXJhaW5ib3ciOiAiXjMuMS4wIiB9IH0sICJzaGE1MTItRnhJWStVODFSM0xHS0N4YUhIRlJRNStnNi9pUmdHTG1lSFdkcDJBbWo0bGpRUnJFSVdIbVp5RGZEWUJSWmxweXFBN3FLeHRTOUREMWRoazhSblJJVlE9PSJdLAoKICAgICJhY29ybiI6IFsiYWNvcm5AOC4xNi4wIiwgIiIsIHsgImJpbiI6IHsgImFjb3JuIjogImJpbi9hY29ybiIgfSB9LCAic2hhNTEyLVVWSnlFOU10dE9zQlFJREt3MXNrYjluQXdRdVI1d3VHRDMrODJLNkpnSmxtL1krS0k5Mm9Oc01OR1pDWWREc1Z0UkhTYWswcGNWNURubzUrNGpoOXN3PT0iXSwKCiAgICAiYW5zaS1yZWdleCI6IFsiYW5zaS1yZWdleEA1LjAuMSIsICIiLCB7fSwgInNoYTUxMi1xdUpRWGxUU1VHTDJMSDlTVVhvOFZ3c1k0c29hbmhnbzZMTlNtODRFMUxCY0U4czNPMHdwZGlSenlSOXovWlpKTWxNV3YzN3FPT2I5cGRKbE1VRUtGUT09Il0sCgogICAgImFuc2ktc3R5bGVzIjogWyJhbnNpLXN0eWxlc0A0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjb2xvci1jb252ZXJ0IjogIl4yLjAuMSIgfSB9LCAic2hhNTEyLXpiQjlyQ0pBVDFyYmppVkRiMmhxS0ZITllMeGd0azhOVVJ4WjNJWndEM0Y2TnR4YlhaUUNublNpMUxreCtJRG9oZFBsRnAyMjJ3VkFMSWhlWkpRU0VnPT0iXSwKCiAgICAiYXNzZXJ0aW9uLWVycm9yIjogWyJhc3NlcnRpb24tZXJyb3JAMi4wLjEiLCAiIiwge30sICJzaGE1MTItSXppOFJRY2ZmcUNlTlZnRmlnS2xpMXNza2xJYnBIbkNZYzZBa25YR1lvQjZnckpxeWVieTdqdjEySlVRZ21UQW5JRG5iY2sxdXhrc1Q0ZHpOM1BXQkE9PSJdLAoKICAgICJiYXNlbGluZS1icm93c2VyLW1hcHBpbmciOiBbImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZ0AyLjEwLjMxIiwgIiIsIHsgImJpbiI6IHsgImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZyI6ICJkaXN0L2NsaS5janMiIH0gfSwgInNoYTUxMi1NdWpZTzNlUDcydXZtU0UwaTR3bHRzb2RSZklwWkFUUDNqdnpSTlJHR3hneklkN2FWb2NWSkpWM25mMDFxbnp6S0ZHeFFWQzlicFd4bDVjanhUci83UT09Il0sCgogICAgImJ1ZmZlci1mcm9tIjogWyJidWZmZXItZnJvbUAxLjEuMiIsICIiLCB7fSwgInNoYTUxMi1FK1hRQ1J3U2JhYWlDaHR2Nms2RHdnYytieCtCczZ2dUtKSEhsNWtveC9CYUtiaGlYenFRT3dLNGNPMjJ5RWxHcDJPQ21qd1ZoVDNIbXhneVBHbkpmUT09Il0sCgogICAgImNhbml1c2UtbGl0ZSI6IFsiY2FuaXVzZS1saXRlQDEuMC4zMDAwMTc5MyIsICIiLCB7fSwgInNoYTUxMi1pd1NzWVdhQ09vaDI2Y1Y4TndOUlZpSGxyZlV2WXNIRGZSVmNidG13MEtnNlBKSVpaWHdNa2oxNDQyRllMQkdrZVVmMWp1QXNVM0RUZnhXNTc5bXJQQT09Il0sCgogICAgImNoYWkiOiBbImNoYWlANi4yLjIiLCAiIiwge30sICJzaGE1MTItTlVQUmx1T2ZPaVRLQkt2V1B0U0Q0UGhGdldDcU9pMEJHU3ROV3M1N1g5anM3WEdUcHJTbUZvejVGMHRXaFI0V1BqTmVSOWpYcWRDNy9VcFNKVG5sUmc9PSJdLAoKICAgICJjaGFsayI6IFsiY2hhbGtANC4xLjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiYW5zaS1zdHlsZXMiOiAiXjQuMS4wIiwgInN1cHBvcnRzLWNvbG9yIjogIl43LjEuMCIgfSB9LCAic2hhNTEyLW9LbmJoRnlSSVhwVXVlejhpQk1teUVhNG5iajRJT1F5dWhjL3d5OWtZNy9XVlBjd0lPOVZBNjY4UHU4UmtPNyswRzc2U0xST2V5dzlDcFEwNjFpNG1BPT0iXSwKCiAgICAiY2xpZW50LW9ubHkiOiBbImNsaWVudC1vbmx5QDAuMC4xIiwgIiIsIHt9LCAic2hhNTEyLUlWM091MGpTTXpacmQzcFo0OG5Ma1Q5REE3QWcxcG5QemFpUWhwVzdjM1JiY3FxenZ6elZ1K0w4Z2ZxTXAvOElNMk1RdFNpcWFDeHJyY2Z1OEk4ck1BPT0iXSwKCiAgICAiY2xpdWkiOiBbImNsaXVpQDguMC4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInN0cmluZy13aWR0aCI6ICJeNC4yLjAiLCAic3RyaXAtYW5zaSI6ICJeNi4wLjEiLCAid3JhcC1hbnNpIjogIl43LjAuMCIgfSB9LCAic2hhNTEyLUJTZU5ueXVzNzVDNC8vTlE5Z1F0MS9jc1RYeW8vOFNiK2FmTEFrekFwdEZ1TXNvZDlIRm9rR051ZFpwaS9vUVY3M2huVksrc1IrNVBWUk1kK0RyN1lRPT0iXSwKCiAgICAiY2xzeCI6IFsiY2xzeEAyLjEuMSIsICIiLCB7fSwgInNoYTUxMi1lWW0wUVdCdFVyQldaV0cwZDM4Nk9HQXcxNlo5OTVQaU9WbzJCN2JqV1NiSGVkR2w1ZTBaV2FxNjVrT0dnVVNOZXNFSURrQjlJU2JUZy9KSzlkaENaQT09Il0sCgogICAgImNvbG9yLWNvbnZlcnQiOiBbImNvbG9yLWNvbnZlcnRAMi4wLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiY29sb3ItbmFtZSI6ICJ+MS4xLjQiIH0gfSwgInNoYTUxMi1SUkVDUHNqN2l1L3hiNW9LWWNzRkhTcHBGTm5zai81Mk9WVFJLYjR6UDVvblh3VkYzelZtbVRvTmNPZkdDK0NSRHBmSy9VNTg0Zk1nMzhaSENhRWxLUT09Il0sCgogICAgImNvbG9yLW5hbWUiOiBbImNvbG9yLW5hbWVAMS4xLjQiLCAiIiwge30sICJzaGE1MTItZE95KzNBdVczYTJ3TmJaSEl1TVpwVGNnakd1TFUvdUJML3ViY1pGOU9YYkRvOGZmNE84eVZwNUJmMGVmUzh1RW9ZbzVxNEZ4N2RZOU9nUUdYZ0FzUUE9PSJdLAoKICAgICJjb21tYW5kZXIiOiBbImNvbW1hbmRlckAyLjIwLjMiLCAiIiwge30sICJzaGE1MTItR3BWa21NOHZGMnZRVWtqMkx2Wm1EMzVKeGVKT0xDd0o5Y1VrdWd5azJudWhidjMrbUp2cExZWXQrMCtVU014RStvaitleS9sSkVuaFp3NzV4L09NY1E9PSJdLAoKICAgICJjb25jdXJyZW50bHkiOiBbImNvbmN1cnJlbnRseUA5LjIuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjaGFsayI6ICI0LjEuMiIsICJyeGpzIjogIjcuOC4yIiwgInNoZWxsLXF1b3RlIjogIjEuOC4zIiwgInN1cHBvcnRzLWNvbG9yIjogIjguMS4xIiwgInRyZWUta2lsbCI6ICIxLjIuMiIsICJ5YXJncyI6ICIxNy43LjIiIH0sICJiaW4iOiB7ICJjb25jIjogImRpc3QvYmluL2NvbmN1cnJlbnRseS5qcyIsICJjb25jdXJyZW50bHkiOiAiZGlzdC9iaW4vY29uY3VycmVudGx5LmpzIiB9IH0sICJzaGE1MTItZnNmck8wTXhWNjRabm95OC9sMXZWSWpqSGEyOVNaeXlxUGdRQndoaURjYVc4d0pjMlczWFdWT0d4NE0zb0pCbnYvemRVWklJcDFnRGVTOThHelA4Tmc9PSJdLAoKICAgICJjb252ZXJ0LXNvdXJjZS1tYXAiOiBbImNvbnZlcnQtc291cmNlLW1hcEAyLjAuMCIsICIiLCB7fSwgInNoYTUxMi1LdnA0NTlIclYyRkVKMUNBc2kxS3UrTVkza2FzSDE5VEZ5a1R6MnhXbU1lcTZiazJOVTNYWHZmSitRNjFtMHhrdFd3dCsxSFNZZjNKWnNUbXMzYVJKZz09Il0sCgogICAgImNzc3R5cGUiOiBbImNzc3R5cGVAMy4yLjMiLCAiIiwge30sICJzaGE1MTItejFIR0tjWXkyeEE4QUdRZndybjBQQXkrUEI3WC9HU2ozVVZKVzlxS3luNDN4V2ErZ2w1blhtVTRxcUxNUnpXVkxGQzhLdXNVWDhULzBrQ2lPWXBBSVE9PSJdLAoKICAgICJkYXRlLWZucyI6IFsiZGF0ZS1mbnNANC4yLjEiLCAiIiwge30sICJzaGE1MTItMzdSaFNkeGFHMXN1ZW42VkRDemE2ck5yUWZvb3lRaDU3SEZWUHdRR0VxMlFXbGlWTHpQUVo4T2EwMTd3ZU91K0haQ256STdOM1BmL3d5b0JLZkVxckE9PSJdLAoKICAgICJkYXRlLWZucy1qYWxhbGkiOiBbImRhdGUtZm5zLWphbGFsaUA0LjEuMC0wIiwgIiIsIHt9LCAic2hhNTEyLWhUSVAveit0K3FLd0JEY21tc25taldUZHV4Q2crNUtmZHFXUXZiMlgvOEM5K2tuWVk2ZXBOL3BmeGREdXlWbFNWZUZ6MHNNNWVFZndJVVE3MFU0Y2tnPT0iXSwKCiAgICAiZGV0ZWN0LWxpYmMiOiBbImRldGVjdC1saWJjQDIuMS4yIiwgIiIsIHt9LCAic2hhNTEyLUJ0ajJCT09PODNvM1d5SDU5ZThNZ1hzeEVRVmNhcmtVT3BFWXJ1YkIwdXJ3bk4xMHlRMzY0cnNpQnlVMTFuWmxxV1labTA1aS9vZjdpbzRtemloQnRRPT0iXSwKCiAgICAiZW1vamktcmVnZXgiOiBbImVtb2ppLXJlZ2V4QDguMC4wIiwgIiIsIHt9LCAic2hhNTEyLU1Tall6Y1dOT0EwZXdBSHB6ME14cFlGdndnNnlqeTFORzN4dGVvcXo2NDRWQ28vUlBnbnIxL0dHdCtpYzNpSlR6UThFdTNUZE0xNFNhd25WVW1HRTZBPT0iXSwKCiAgICAiZW5oYW5jZWQtcmVzb2x2ZSI6IFsiZW5oYW5jZWQtcmVzb2x2ZUA1LjIxLjUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZ3JhY2VmdWwtZnMiOiAiXjQuMi40IiwgInRhcGFibGUiOiAiXjIuMy4zIiB9IH0sICJzaGE1MTItbUxDTmJyUWxpMTFLMXlTVW11TnQ0WlVCM09wR0lEcTRxMnZUQlRmNWNMMmxwc1JqSTlRS3FTRDBuZGpXOEZ5dmNXL0pqNDZnTWU5c3l5SEFzdk1hL0E9PSJdLAoKICAgICJlcy1tb2R1bGUtbGV4ZXIiOiBbImVzLW1vZHVsZS1sZXhlckAyLjEuMCIsICIiLCB7fSwgInNoYTUxMi1uMjd6VFlNall1MWFqNE1qQ1d6U1A3RzlyNzV1dHNhb2M4bTYxd2VLK1c4Sk1CR0dReWJkNDNHc3RDWFozV05tU0Z0R1Q5d2k1OXFRVFc2bWhUUjVMUT09Il0sCgogICAgImVzYnVpbGQiOiBbImVzYnVpbGRAMC4yNS40IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGVzYnVpbGQvYWl4LXBwYzY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9hbmRyb2lkLWFybSI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvYW5kcm9pZC1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvYW5kcm9pZC14NjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2Rhcndpbi1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZGFyd2luLXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZnJlZWJzZC1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZnJlZWJzZC14NjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWFybSI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtYXJtNjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWlhMzIiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWxvb25nNjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LW1pcHM2NGVsIjogIjAuMjUuNCIsICJAZXNidWlsZC9saW51eC1wcGM2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtcmlzY3Y2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtczM5MHgiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbmV0YnNkLWFybTY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9uZXRic2QteDY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9vcGVuYnNkLWFybTY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9vcGVuYnNkLXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvc3Vub3MteDY0IjogIjAuMjUuNCIsICJAZXNidWlsZC93aW4zMi1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvd2luMzItaWEzMiI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvd2luMzIteDY0IjogIjAuMjUuNCIgfSwgImJpbiI6IHsgImVzYnVpbGQiOiAiYmluL2VzYnVpbGQiIH0gfSwgInNoYTUxMi04cGdqTFVjVWpjZ0RnKzJRNE5ZWG5QYm8vdm5jQVk0VW15YUNtMGpaZXZFUnFDSFpJYVd3ZEpIa2Y4WFF0dTRBeFNLQ2R2clViVDBYVXIxSWRaekk4UT09Il0sCgogICAgImVzY2FsYWRlIjogWyJlc2NhbGFkZUAzLjIuMCIsICIiLCB7fSwgInNoYTUxMi1XVWoycWx4YVF0TzRnNlBxNWMyOUdUY1dHRHlkOGl0TDh6VGxpcGdFQ3ozSmVzQWlpT0tvdGQ4SlU2b3RCM1BBQ2dHNnhrSlV5Vmhib01TK2JqZS9qQT09Il0sCgogICAgImVzdHJlZS13YWxrZXIiOiBbImVzdHJlZS13YWxrZXJAMy4wLjMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL2VzdHJlZSI6ICJeMS4wLjAiIH0gfSwgInNoYTUxMi03UlVLZlhnU01Na3p0Nlp1WG1xYXBPdXJMR1BQZmdqNmw5dVJaN2xSR29sdmsweTJ5b2NjMzVMZGN4S0M1UFFaZG4yRE1xaW9BUTJOb1djclRLbW02Zz09Il0sCgogICAgImV4cGVjdC10eXBlIjogWyJleHBlY3QtdHlwZUAxLjMuMCIsICIiLCB7fSwgInNoYTUxMi1rbnZ5ZWF1WWhxak9ZdlE2Nk16blNNczgzd21IckN5Y05FTjZBbysyQWVZRWZ4VUlrdWlWeGRFYTFxbEdFUEsrV2UzbjBUSGlEY2lZU3NDY2dXL0RvQT09Il0sCgogICAgImZkaXIiOiBbImZkaXJANi41LjAiLCAiIiwgeyAicGVlckRlcGVuZGVuY2llcyI6IHsgInBpY29tYXRjaCI6ICJeMyB8fCBeNCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbInBpY29tYXRjaCJdIH0sICJzaGE1MTItdEliWXRaYnVjT3MwQlJHcVBKa3NoSlVZZEwrU0RIN2RWTThnankrRVJwM1dBVWpMRUZKRSswMmthbnlIdHdqV09ud3JLWUJpd0FtTTBwNGtMSkFuWGc9PSJdLAoKICAgICJmc2V2ZW50cyI6IFsiZnNldmVudHNAMi4zLjMiLCAiIiwgeyAib3MiOiAiZGFyd2luIiB9LCAic2hhNTEyLTV4b0RmWCtmTDdmYUFUbmFnbVdQcGJGdHdoL1I3N1dtTU1xcUhHUzY1QzN2dkIwWUhyZ0YrQjFZbVozNDQxdE1qNW42M2swMjEyWE5vSnd6bGhmZlF3PT0iXSwKCiAgICAiZ2V0LWNhbGxlci1maWxlIjogWyJnZXQtY2FsbGVyLWZpbGVAMi4wLjUiLCAiIiwge30sICJzaGE1MTItRHlGUDNCTS8zWUhUUU9DVUwvdzBPWkhSMGxwS2VHcnhvdGNIV2NxTkVkbmx0cUZ3WFZmaEVCUTk0ZUlvMzRBZlFwbzByR2tpNGN5SWlmdFkwNmgyRmc9PSJdLAoKICAgICJncmFjZWZ1bC1mcyI6IFsiZ3JhY2VmdWwtZnNANC4yLjExIiwgIiIsIHt9LCAic2hhNTEyLVJiSjUvam1GY05OQ2NEVjVvOWVUbkJMSi9Ic3pXVjBQNzNiYytGZjRuUy9ySmorWWFTNklHeWlPTDBWb0JZWCtsMVdybDNrNjNoL0tySCtuaEowWHZRPT0iXSwKCiAgICAiaGFzLWZsYWciOiBbImhhcy1mbGFnQDQuMC4wIiwgIiIsIHt9LCAic2hhNTEyLUV5a0pUL1ExS2pUV2N0cHBnSUFnZlNPMHRLVnVaVWpoZ01yMTdrcVR1bU1sNkFmdjNFSVNsZVU3cVpVem9YREZUQUhUREM0Tk9vRy9aeFUzRXZsTVBRPT0iXSwKCiAgICAiaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQiOiBbImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50QDMuMC4wIiwgIiIsIHt9LCAic2hhNTEyLXp5bW01K3Urc0NzU1d5RDlxTmFlalYzREZ2aENLY2xLZGl6WWFKVXVIQTgzUkxqYjduU3VHbmRkQ0hHdjBoaytLWTdCTUFsc1dlSzRVZWc2RVY2WFFnPT0iXSwKCiAgICAiaml0aSI6IFsiaml0aUAyLjcuMCIsICIiLCB7ICJiaW4iOiB7ICJqaXRpIjogImxpYi9qaXRpLWNsaS5tanMiIH0gfSwgInNoYTUxMi1BQy83Sm9mSnZaR3JybmVXTmFFbkplT0xVeCtKbEd0N3ROYTB3WmlSUFQ0TVkxd21mS2p0Mis2TzJwMnV6Mitza2xsOE9aWm1KTU5xZWtlN2tLYk5nUT09Il0sCgogICAgImxpYnBob25lbnVtYmVyLWpzIjogWyJsaWJwaG9uZW51bWJlci1qc0AxLjEyLjQxIiwgIiIsIHt9LCAic2hhNTEyLWxzbU1tR1hCeFhJSy9WTUxFajBrTDZNdFVzMWtCR2oxblRDemk2emdRb0cxREV3cXd0MkRReUh4Y0x5a2NlSXhBbmZFM2h5YTdOdUloNlBwQzZTM2ZBPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzIjogWyJsaWdodG5pbmdjc3NAMS4zMi4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImRldGVjdC1saWJjIjogIl4yLjAuMyIgfSwgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAibGlnaHRuaW5nY3NzLWFuZHJvaWQtYXJtNjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1kYXJ3aW4tYXJtNjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1kYXJ3aW4teDY0IjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtZnJlZWJzZC14NjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1saW51eC1hcm0tZ251ZWFiaWhmIjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251IjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtbXVzbCI6ICIxLjMyLjAiLCAibGlnaHRuaW5nY3NzLWxpbnV4LXg2NC1nbnUiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtbXVzbCI6ICIxLjMyLjAiLCAibGlnaHRuaW5nY3NzLXdpbjMyLWFybTY0LW1zdmMiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy13aW4zMi14NjQtbXN2YyI6ICIxLjMyLjAiIH0gfSwgInNoYTUxMi1OWFlCemluTnJibGZyYVBHeXJiUG9EMTlDMWg5bGZJLzFtemdXWXZYVVRlNDE0R3ovWDFGRDJYQlpTWk03clJUck1BOEpMM090QWFHaWZySUtoUTV5UT09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1hbmRyb2lkLWFybTY0IjogWyJsaWdodG5pbmdjc3MtYW5kcm9pZC1hcm02NEAxLjMyLjAiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItWUs3L0NsVHQ0a0FLMHZvNnczWCtQbm0wRDJjZjJ2UEhiaE9YZG9OdGkxR2EwYWwxUDRUQlpod2pBVHZqTndMRUJDbkt2akpjMmpRZ0hYSDBORXdsQWc9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtZGFyd2luLWFybTY0IjogWyJsaWdodG5pbmdjc3MtZGFyd2luLWFybTY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVJ6ZUc5SnU1YmFnMkJ2MS9sd2xWSnZCRTNxNlR0WHNrZFpMTEN5Zmc1cHQrSEx6OUJxbElDTzdMWk03VkhOVFRuLzVQUmhIRkJTams1bGM0Y21zY1BRPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzLWRhcndpbi14NjQiOiBbImxpZ2h0bmluZ2Nzcy1kYXJ3aW4teDY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1VK1FzQnAybS9zMndxcFVZVC82d25sYWdkWmJ0WmRuZFNtdXQvTkpxbENjTUxUV3A1bXVDcklEK0s1VUo2anFEMkJGc2hlakNZWG5pUERiTmg3M1Y4dz09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1mcmVlYnNkLXg2NCI6IFsibGlnaHRuaW5nY3NzLWZyZWVic2QteDY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSkNUaWdlZEVrc1prM3RIVFR0aG5NZFZmR2Y2MUZreThKaTJFNFlqVVRFUVgxNHhpeS9sVHpYbnUxdndpWmUzYlllMHErU3BzU0gvQ1RlRFhLNldIaWc9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtLWdudWVhYmloZiI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LWFybS1nbnVlYWJpaGZAMS4zMi4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTIteDZybm5wUmEyR0wwelFPa3Q2cnRzM1lEUHpkdUxwV3Z3QUY2RU1oWEZWWlhENHRQckJrRUZxekdvd3pDc0lXc1BqcVNLK3R5TkVPRFVCWGVlVkhTa3c9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251IjogWyJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItMG5uTXlveU9MUkpYZmJNT2lsYVNSY0xIM0p3NXo5SEROR2ZUL2d3Q1BnYURqbngwaTh3N3ZCekZMRlIxZjZDTUxLRjhnVmJlYm1rVU4zZmEva1FKcFE9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtbXVzbCI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LWFybTY0LW11c2xAMS4zMi4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1VcFFrb2VucjRVSkV6Z1ZJWXBJODBsREZ2Um1QVmc2b3Fib05IZm9INENRSWZOQStIT3JaN01vN0taUDAyZEM2TGpnaFBRSmVCc3ZYaEpvZC93bklCZz09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtZ251IjogWyJsaWdodG5pbmdjc3MtbGludXgteDY0LWdudUAxLjMyLjAiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1WN1FyNTJJaFptZEtQVnIrVnR3OG8rV0xzUUpZQ1RkOGxvSWZwRGFNUldHVVpmQk9ZRUpleUpJa3FHSURNWlB3UHgyNHBVTWZ3U3h4SThwaHIvTWJPQT09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtbXVzbCI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LXg2NC1tdXNsQDEuMzIuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLWJZY0xwK1ZiMGF3c2lYZy84MHVDUmV6Q1lITmcxL2wzbXQwZ3pIbldWOVhQMVc1c0thNS9UQ2RHV2FSL3pCTTJQZUYvSGJzUXYvajJVUk5PaVZ1eFdnPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzLXdpbjMyLWFybTY0LW1zdmMiOiBbImxpZ2h0bmluZ2Nzcy13aW4zMi1hcm02NC1tc3ZjQDEuMzIuMCIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItOFNiQzhCUjQwcFM2YmFDTThzYnRZRFN3RVZRZDRKbEZUT2xhRDNnV0dIZlRoVGNBQm5OREJkYTZlVFplcWJvZmFsSUpoRngwcUt6Z0hKbWNQVG5HZHc9PSJdLAoKICAgICJsaWdodG5pbmdjc3Mtd2luMzIteDY0LW1zdmMiOiBbImxpZ2h0bmluZ2Nzcy13aW4zMi14NjQtbXN2Y0AxLjMyLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1BbXE5Qi9Tb1pZZERpMWtGcm9qbm9xUEx4WWhRNFdvNVhpTDhFVkpyVnNCOEFSb0MxUFdXNlZHdFQwV0tDZW1qeThhQytsb3VKbmpTN1UxOHgzYjA2UT09Il0sCgogICAgIm1hZ2ljLXN0cmluZyI6IFsibWFnaWMtc3RyaW5nQDAuMzAuMjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjIjogIl4xLjUuNSIgfSB9LCAic2hhNTEyLXZkMkY0WVV5RVhLR2NMSG9xK1RFeUNqeHVlU2VIbkZ4eXlqTnA4MHlnMFhWNHZVaG5EZXIvbHZ2bHFNL2FyQjViWFFONUsyLzNvaW55Q1J5eDhUMkNRPT0iXSwKCiAgICAibmFub2lkIjogWyJuYW5vaWRAMy4zLjEyIiwgIiIsIHsgImJpbiI6IHsgIm5hbm9pZCI6ICJiaW4vbmFub2lkLmNqcyIgfSB9LCAic2hhNTEyLVpCOVJILzM5cXBxNVZ1NlkrTm1VYUZoUVI2cHArTTJYdDc2WEJuRXdEYUdjVkFxaGx2eHJsM0IyYktTNUQzTkgzUVI3NnYzYVNyS2FGL0tpeTdsRXRRPT0iXSwKCiAgICAibmV4dCI6IFsibmV4dEAxNi4yLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQG5leHQvZW52IjogIjE2LjIuNiIsICJAc3djL2hlbHBlcnMiOiAiMC41LjE1IiwgImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZyI6ICJeMi45LjE5IiwgImNhbml1c2UtbGl0ZSI6ICJeMS4wLjMwMDAxNTc5IiwgInBvc3Rjc3MiOiAiOC40LjMxIiwgInN0eWxlZC1qc3giOiAiNS4xLjYiIH0sICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBuZXh0L3N3Yy1kYXJ3aW4tYXJtNjQiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy1kYXJ3aW4teDY0IjogIjE2LjIuNiIsICJAbmV4dC9zd2MtbGludXgtYXJtNjQtZ251IjogIjE2LjIuNiIsICJAbmV4dC9zd2MtbGludXgtYXJtNjQtbXVzbCI6ICIxNi4yLjYiLCAiQG5leHQvc3djLWxpbnV4LXg2NC1nbnUiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy1saW51eC14NjQtbXVzbCI6ICIxNi4yLjYiLCAiQG5leHQvc3djLXdpbjMyLWFybTY0LW1zdmMiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy13aW4zMi14NjQtbXN2YyI6ICIxNi4yLjYiLCAic2hhcnAiOiAiXjAuMzQuNSIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJAb3BlbnRlbGVtZXRyeS9hcGkiOiAiXjEuMS4wIiwgIkBwbGF5d3JpZ2h0L3Rlc3QiOiAiXjEuNTEuMSIsICJiYWJlbC1wbHVnaW4tcmVhY3QtY29tcGlsZXIiOiAiKiIsICJyZWFjdCI6ICJeMTguMi4wIHx8IDE5LjAuMC1yYy1kZTY4ZDJmNC0yMDI0MTIwNCB8fCBeMTkuMC4wIiwgInJlYWN0LWRvbSI6ICJeMTguMi4wIHx8IDE5LjAuMC1yYy1kZTY4ZDJmNC0yMDI0MTIwNCB8fCBeMTkuMC4wIiwgInNhc3MiOiAiXjEuMy4wIiB9LCAib3B0aW9uYWxQZWVycyI6IFsiQG9wZW50ZWxlbWV0cnkvYXBpIiwgIkBwbGF5d3JpZ2h0L3Rlc3QiLCAiYmFiZWwtcGx1Z2luLXJlYWN0LWNvbXBpbGVyIiwgInNhc3MiXSwgImJpbiI6IHsgIm5leHQiOiAiZGlzdC9iaW4vbmV4dCIgfSB9LCAic2hhNTEyLXFPVmdLSmcxK0F0MTVOcGVVUCtlSmdDSHZUQ2dYc29nd2VxODdSaS9JeDdQa3FRSGc0c2RhWG1TRnFLbGdhSVhFNGtXMGcyNUxFNjhXODdVQU5sSHR3PT0iXSwKCiAgICAib2J1ZyI6IFsib2J1Z0AyLjEuMSIsICIiLCB7fSwgInNoYTUxMi11VHFGOU11UHJhQVErSXNuUGYzNjZSRzRjUDlSdFVpN01MTzFOM0tFYyt3YjBhNnlLcGVMMGxtazJJQjFqWTVLSFBBbFRjNlQvSlJkQy9ZcXhITndrUT09Il0sCgogICAgInBhdGhlIjogWyJwYXRoZUAyLjAuMyIsICIiLCB7fSwgInNoYTUxMi1XVWpHY0FxUDFnUWFjb1FlK09CSnNGQTdMZDREeVh1VUlqWjVjYzc1Y0xIdko3ZHROc1R1Z3BoeElBRHdzcFMrQXJhQVVlUENLclNWdFBMRmovRjg4dz09Il0sCgogICAgInBpY29jb2xvcnMiOiBbInBpY29jb2xvcnNAMS4xLjEiLCAiIiwge30sICJzaGE1MTIteGNlSDJzbmh0YjVNOWxpcURzbUV3NTZsZTM3Nm1UWmtFWC9qRWIvUnhORnllZ051bDdlTnNsQ1hQOUZEai9MY3UwWDhLRXlNY2VQMm50cGFIckRFVkE9PSJdLAoKICAgICJwaWNvbWF0Y2giOiBbInBpY29tYXRjaEA0LjAuNCIsICIiLCB7fSwgInNoYTUxMi1RUDg4QkFLdk1hbS8zTnhINnZqMm8yMVI2TWp4WlVBZDZubHdBUy9wbkd2TjlJVkxvY0xIeEdZSXpGaGc2ZlVRKzV0aDZQNGR2NGVXOWpYM0RTSWo3QT09Il0sCgogICAgInBvc3Rjc3MiOiBbInBvc3Rjc3NAOC41LjE1IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIm5hbm9pZCI6ICJeMy4zLjEyIiwgInBpY29jb2xvcnMiOiAiXjEuMS4xIiwgInNvdXJjZS1tYXAtanMiOiAiXjEuMi4xIiB9IH0sICJzaGE1MTItRmZSOHNqZDRlbTJUNmZiM0kyTXdBSlU3SFdWTXI5emJhK2VubVFlZVdGZkNibStVT0MvMFg0RFM4WHRwVVRNd1dNR2JqS1lQN3hqZk5la3p5R21CM0E9PSJdLAoKICAgICJyZWFjdCI6IFsicmVhY3RAMTkuMi42IiwgIiIsIHt9LCAic2hhNTEyLXNmV0dHZmF2aTB4cjhQZzBzVnN5SE1BT3ppVllLZ1BMTnJTN2lnK2l2TU5iM3diQ0J3M0t4dGZsc0dCQXdEM2dZUWxFL0FFWnNUTGdUb1JyU0NqYjBRPT0iXSwKCiAgICAicmVhY3QtZGF5LXBpY2tlciI6IFsicmVhY3QtZGF5LXBpY2tlckA5LjE0LjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGRhdGUtZm5zL3R6IjogIl4xLjQuMSIsICJAdGFiYnlfYWkvaGlqcmktY29udmVydGVyIjogIjEuMC41IiwgImRhdGUtZm5zIjogIl40LjEuMCIsICJkYXRlLWZucy1qYWxhbGkiOiAiNC4xLjAtMCIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJyZWFjdCI6ICI+PTE2LjguMCIgfSB9LCAic2hhNTEyLXRCYW9EV2pQd2UwTTVwR3J1bTRIMFNSNkx5aytCTzlvSG5wOUpiS3BHS1cybWxyYU5QZ1A5Qk1mc2c1cFdwd3Jzc0FSbWVxazdZQmwyb1h1dFpUYUhBPT0iXSwKCiAgICAicmVhY3QtZG9tIjogWyJyZWFjdC1kb21AMTkuMi42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInNjaGVkdWxlciI6ICJeMC4yNy4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgInJlYWN0IjogIl4xOS4yLjYiIH0gfSwgInNoYTUxMi0wcHJNSStodkJiUGpzV254REx4bENHeU04UE42VXVXakVVQ1ltWmhPNjd4SVY5WGFzYS9yL3ZEbnErWHlxNExvMjdnOFFTYk81WXpBUnUwRDFTcHMzZz09Il0sCgogICAgInJlcXVpcmUtZGlyZWN0b3J5IjogWyJyZXF1aXJlLWRpcmVjdG9yeUAyLjEuMSIsICIiLCB7fSwgInNoYTUxMi1mR3hFSTcrd3NHOXhydmRqc3JsbUwyMk9NVFRpSFJ3QU1yb2lFZU1ncThnem9MQy9QUXI3UnNSRFNUTFVnL2JaQVp0RitUVklrSGM2LzRSSUtydWkrUT09Il0sCgogICAgInJlc2VsZWN0IjogWyJyZXNlbGVjdEA1LjIuMCIsICIiLCB7fSwgInNoYTUxMi1BZ1ozVU9abTNZbmRmcko0T1lqZ3JUN2JtQ20vMWlxa2p2RWZIL29ZanpoNlBEMnF3NFF1VDNqam5YSXJwZHQ0TVRwTVhjbE1UM2xYYm1SWStYUmFrdz09Il0sCgogICAgInJvbGxkb3duIjogWyJyb2xsZG93bkAxLjAuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAb3hjLXByb2plY3QvdHlwZXMiOiAiPTAuMTMwLjAiLCAiQHJvbGxkb3duL3BsdWdpbnV0aWxzIjogIl4xLjAuMCIgfSwgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQHJvbGxkb3duL2JpbmRpbmctYW5kcm9pZC1hcm02NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1kYXJ3aW4tYXJtNjQiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1mcmVlYnNkLXg2NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmIjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LWFybTY0LWdudSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsIjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXBwYzY0LWdudSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1zMzkweC1nbnUiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctbGludXgteDY0LWdudSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC14NjQtbXVzbCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1vcGVuaGFybW9ueS1hcm02NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy13YXNtMzItd2FzaSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjIjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLXdpbjMyLXg2NC1tc3ZjIjogIjEuMC4xIiB9LCAiYmluIjogeyAicm9sbGRvd24iOiAiYmluL2NsaS5tanMiIH0gfSwgInNoYTUxMi1YMEtRSGxqTm5Fa1dOcXFpejl6SnJHdW5oMUIwSGdPeExYdm5GcENPY2FkemN5NXFvaFozdHFNRVVnMDB2bmNvUm92WHVLM1pxQ1Q5S25uS3pvSW5GUT09Il0sCgogICAgInJ4anMiOiBbInJ4anNANy44LjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuMS4wIiB9IH0sICJzaGE1MTItZGhLZjkwM1UvUFFaWTZib05OdEFHZFdiRzg1V0FialQvMXhZb1pJQzdGQVkweVdhcE9CUVZzVnJEbDU4Vzg2Ly9lMVZwTU5CdFJWNE1hWGZkTXlTRkE9PSJdLAoKICAgICJzY2hlZHVsZXIiOiBbInNjaGVkdWxlckAwLjI3LjAiLCAiIiwge30sICJzaGE1MTItZU52K1dyVmJLdTFmM3ZiWUpUL3h0aUY1c3lBNUhQSU10ZjlJZ1kvbktnMHNXcXpBVUV2cVkveG03T2NaYy9xYWZMeC9pTzlGZ09tZVNBcDR2NXRpL1E9PSJdLAoKICAgICJzZW12ZXIiOiBbInNlbXZlckA3LjguMCIsICIiLCB7ICJiaW4iOiB7ICJzZW12ZXIiOiAiYmluL3NlbXZlci5qcyIgfSB9LCAic2hhNTEyLUFjTTdkVi81dWw0RWVrb1EyOUFnbTV2cmk4Sk5xUnlqMzlvMHFwWDZ2REYyR1pydHV0Wmw1UndnRDFYblpqaVRBZm5jc0poTUk0OFFRSDNzTjg3WU5BPT0iXSwKCiAgICAic2hhcnAiOiBbInNoYXJwQDAuMzQuNSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAaW1nL2NvbG91ciI6ICJeMS4wLjAiLCAiZGV0ZWN0LWxpYmMiOiAiXjIuMS4yIiwgInNlbXZlciI6ICJeNy43LjMiIH0sICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtZGFyd2luLWFybTY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLWRhcndpbi14NjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWRhcndpbi14NjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybSI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgtYXJtNjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1yaXNjdjY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1zMzkweCI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgteDY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4bXVzbC14NjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saW51eC1hcm0iOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgtYXJtNjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgtcHBjNjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgtcmlzY3Y2NCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC1saW51eC1zMzkweCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC1saW51eC14NjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXhtdXNsLWFybTY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLWxpbnV4bXVzbC14NjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtd2FzbTMyIjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLXdpbjMyLWFybTY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLXdpbjMyLWlhMzIiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtd2luMzIteDY0IjogIjAuMzQuNSIgfSB9LCAic2hhNTEyLU91OUk1RnQ5V05jQ2JYclU5Y01nUEJjQ0s4TGl3THFjYnl3VzN0NG9EVjM3bjFwenB1TkxzWWlBVjhlT0RuamJ0UWxTRHdaMmNVRWVRejRFNTRIbHRnPT0iXSwKCiAgICAic2hlbGwtcXVvdGUiOiBbInNoZWxsLXF1b3RlQDEuOC4zIiwgIiIsIHt9LCAic2hhNTEyLU9ibW5JRjRoWE5nMUJxaG5IbWdiREVURjhkTFBDZ2daV0Jqa1FmaFpwYnN6Wm5ZdXI1RFVsalRjQ0hpaTVMQzNKNUUweWVPLzFMSU15SCtVdkhRZ3l3PT0iXSwKCiAgICAic2lnaW5mbyI6IFsic2lnaW5mb0AyLjAuMCIsICIiLCB7fSwgInNoYTUxMi15YngwV08xLzhiU0JMRVdYWnZFZDdnTVczU24zSkZsVzNUdlgxblJFYkRMUk5RTmFlTk44V0swbWVCd1BkQWFPSTdUdFJSUkpuL0VzMXpocnJDSHU3Zz09Il0sCgogICAgInNvdXJjZS1tYXAiOiBbInNvdXJjZS1tYXBAMC42LjEiLCAiIiwge30sICJzaGE1MTItVWpnYXB1bVdsYk1oa0JnelQ3WWtjNVlYVVQ0NkYwaUt1OFNHWHEwYmN3UDVkei9oMFBsajZlbkpxanoxWmJxMmw1V2FxWW5yVmJ3V09XTXlGM0Y0N2c9PSJdLAoKICAgICJzb3VyY2UtbWFwLWpzIjogWyJzb3VyY2UtbWFwLWpzQDEuMi4xIiwgIiIsIHt9LCAic2hhNTEyLVVYV01LaExPd1ZLYjcyOElVdFFQWHhmWVUrdXNkeWJ0VXJLLzh1R0U4Q1FNdnJoT3B3dnpEQndqMFFoU0w3TVFjN3ZJc0lTQkc4VlE4K0lEUXhwZlFBPT0iXSwKCiAgICAic291cmNlLW1hcC1zdXBwb3J0IjogWyJzb3VyY2UtbWFwLXN1cHBvcnRAMC41LjIxIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImJ1ZmZlci1mcm9tIjogIl4xLjAuMCIsICJzb3VyY2UtbWFwIjogIl4wLjYuMCIgfSB9LCAic2hhNTEyLXVCSFUzTDNjenNJeVlYS1g4OGZkckdvdnhkU0NvVEdEUlo2U1lYdFNSeExaVXpIZzVQLzY2SHQ2dW9VbEh1OUVab2QraW5YaEtvM3FRZ3dYVVQveTF3PT0iXSwKCiAgICAic3RhY2tiYWNrIjogWyJzdGFja2JhY2tAMC4wLjIiLCAiIiwge30sICJzaGE1MTItMVhNSkU1ZlFvMWpHSDZZLzdlYm53UE9CRWtJRW5UNFFGMzJkNVIxK1ZYZFh2ZU0wSUJNSnQ4emZheFgxUDNRaFZ3clllKzU3Nitqa0FOdFNTMm1CYnc9PSJdLAoKICAgICJzdGQtZW52IjogWyJzdGQtZW52QDQuMS4wIiwgIiIsIHt9LCAic2hhNTEyLVJxN3liY1gyUnVDNTVyOW9hUFZFVzcveHUzdGo4dTRHZUJZSEJXQ3ljaEZ0ek1Jcjg2QTdlM1BQRUJQVDM3c0hTdEtYMytUaVgvRnIvQUNtSkxWbExRPT0iXSwKCiAgICAic3RyaW5nLXdpZHRoIjogWyJzdHJpbmctd2lkdGhANC4yLjMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZW1vamktcmVnZXgiOiAiXjguMC4wIiwgImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50IjogIl4zLjAuMCIsICJzdHJpcC1hbnNpIjogIl42LjAuMSIgfSB9LCAic2hhNTEyLXdLeVFSUXBqSjBzSXA2MkVyU1pkR3NqTUpXc2FwNW9STmloSGh1Nkc3SlZPLzlqSUI2VXlldkwrdFh1T3Fybmc4ai9jeEtUV3lXVXd2U1RyaWlaei9nPT0iXSwKCiAgICAic3RyaXAtYW5zaSI6IFsic3RyaXAtYW5zaUA2LjAuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJhbnNpLXJlZ2V4IjogIl41LjAuMSIgfSB9LCAic2hhNTEyLVkzOFZQU0hjcWtGckNwRm5ROXZ1U1htcXV1djVvWE9LcEdlVDZhR3JyM28zR2M5QWxWYTZKQmZVU09DbmJ4R0daRisvMG9vSTdLclB1VVN6dFVkVTVBPT0iXSwKCiAgICAic3R5bGVkLWpzeCI6IFsic3R5bGVkLWpzeEA1LjEuNiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjbGllbnQtb25seSI6ICIwLjAuMSIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJyZWFjdCI6ICI+PSAxNi44LjAgfHwgMTcueC54IHx8IF4xOC4wLjAtMCB8fCBeMTkuMC4wLTAiIH0gfSwgInNoYTUxMi1xU1Z5RFRlTW90ZHZRWW9IV0xOR3dSRkpIQytpK1p2ZEJSWW9zT0ZnQytXZzF2eDRmck4yL1JHL05BN1NZcXF2S05MZjM5UDJMU1JBMnB1Nm4wWFlaQT09Il0sCgogICAgInN1cHBvcnRzLWNvbG9yIjogWyJzdXBwb3J0cy1jb2xvckA4LjEuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJoYXMtZmxhZyI6ICJeNC4wLjAiIH0gfSwgInNoYTUxMi1NcFVFTjJPb2R0VXp4dktRbDcyY1VGN1JRNUVpSHNHdlNzVkcwaWE5YzVSYldHTDJDSTRDN0VwUFM4VVRCSXBsbmx6WmlOdVY1NncrRnVOeHkzdHkyUT09Il0sCgogICAgInRhaWx3aW5kLW1lcmdlIjogWyJ0YWlsd2luZC1tZXJnZUAzLjYuMCIsICIiLCB7fSwgInNoYTUxMi11eEw3cUFWUXJpcVJRUEF5SzNwajY2VnFza1dxb1ozN1BXOTRqd09Ud05mcS96OW95dTFWK2VxclpxdFIyK2ZDaVhkWU9aZS9Nb2R0OEd0dnFOenUrdz09Il0sCgogICAgInRhaWx3aW5kY3NzIjogWyJ0YWlsd2luZGNzc0A0LjMuMCIsICIiLCB7fSwgInNoYTUxMi15Nm54TUdCMW5NVzlSNms5NmU1Z2RJRnpjZkwvZ1RKUk5hcUdlczFZdmtMblBWWHpXZ2JxRkYyeUxDMFQ4Rzc3NG4yNGN4M1BlOFhyS29uaUNPQUgrUT09Il0sCgogICAgInRhcGFibGUiOiBbInRhcGFibGVAMi4zLjMiLCAiIiwge30sICJzaGE1MTItdXhjL3pwcUZnNng3Qzh2T0U3bGg2TGJkYThlRUw5em1WbS9QTGVUUEJSaGgxeENnZFdhUStKMUNVaWVHcElmbTJIZHRzVXBSditIc2hpYXNCTWNjNkE9PSJdLAoKICAgICJ0ZXJzZXIiOiBbInRlcnNlckA1LjE2LjkiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlLW1hcCI6ICJeMC4zLjIiLCAiYWNvcm4iOiAiXjguNS4wIiwgImNvbW1hbmRlciI6ICJeMi4yMC4wIiwgInNvdXJjZS1tYXAtc3VwcG9ydCI6ICJ+MC41LjIwIiB9LCAiYmluIjogeyAidGVyc2VyIjogImJpbi90ZXJzZXIiIH0gfSwgInNoYTUxMi1IUGEvRmRUQjlYR0kySDEva2VMRlpIeGw2V052QUk0WWFsSEd0RFFUbE1uSmNvcVNhYjFVd0w0bDFoR0VoczYvR21MSEJaSWcvWWdCKytqY2J6b09FZz09Il0sCgogICAgInRpbnliZW5jaCI6IFsidGlueWJlbmNoQDIuOS4wIiwgIiIsIHt9LCAic2hhNTEyLTArRFV2cVdNVmFsTG1oYTZscjRrRDhpQU1LMUh6VjAvYUtuQ3RXYjl2OTY0MVRuUC9NRmI3UGMyYnhveFFqVFhBRXJyeVhWZ1VPZnYyWXFObGxxR2VnPT0iXSwKCiAgICAidGlueWV4ZWMiOiBbInRpbnlleGVjQDEuMS4yIiwgIiIsIHt9LCAic2hhNTEyLWRBcVNxRS9SYWJwQktJOCtoMjZHZkxxNlZiM0pWWHMzMFhZUWpkTWphai9jMnRTOElZWU1iSXpQNTk5S3RSajdjNTcvd1lBcGIzUWpnUmdYbXJDdWtBPT0iXSwKCiAgICAidGlueWdsb2JieSI6IFsidGlueWdsb2JieUAwLjIuMTYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZmRpciI6ICJeNi41LjAiLCAicGljb21hdGNoIjogIl40LjAuNCIgfSB9LCAic2hhNTEyLXBuOTlWaG9BQ1lSOG5GSGh4cWl4K3V2c2JYaW5lQWFzV201b2pYb044eEV3SzVLZDMvVHJoTm4xd0J5dUQ1MlV4V1JMeThwdStrUk1uaUVpNkVxOVpnPT0iXSwKCiAgICAidGlueXJhaW5ib3ciOiBbInRpbnlyYWluYm93QDMuMS4wIiwgIiIsIHt9LCAic2hhNTEyLUJmK0lMbUJncmV0VXJkSnh6WE0wU2dYTFozWGZpYVV1T2ovSUtRSHVUWGlwKzA1WG4rdXlFWWRWZzBrWURpcFRCY0xyQ1Z5VXpBUHo3UW1BcmIwbW13PT0iXSwKCiAgICAidHJlZS1raWxsIjogWyJ0cmVlLWtpbGxAMS4yLjIiLCAiIiwgeyAiYmluIjogeyAidHJlZS1raWxsIjogImNsaS5qcyIgfSB9LCAic2hhNTEyLUwwT3JwaThxR3BSRy8vTmQrSDkwdkZCKzNpSG51ZTF6U1NHbU5PT0NoMUdMSjdyVUtWd1YySHZpanBoR1FTMlVtaFVaZXdTOVZndnhZSWRncitmRzFBPT0iXSwKCiAgICAidHNsaWIiOiBbInRzbGliQDIuOC4xIiwgIiIsIHt9LCAic2hhNTEyLW9KRnU5NEhRYitLVmR1U1VRTDd3bnBtcW5mbUxzT0EvbkFoNmI2RUgwd0NFb0swL21QZVhVNmMzd0tEVjgzTWtPdUhQUkh0U1hLS1U5OUlCYXpTLzJ3PT0iXSwKCiAgICAidHlwZXNjcmlwdCI6IFsidHlwZXNjcmlwdEA1LjkuMyIsICIiLCB7ICJiaW4iOiB7ICJ0c2MiOiAiYmluL3RzYyIsICJ0c3NlcnZlciI6ICJiaW4vdHNzZXJ2ZXIiIH0gfSwgInNoYTUxMi1qbDF2WnpQRGluTHI5ZVV0M0ovdDdWNkZnTkV3OVFqdkJQZHlzejlLZlFERDQxZlFyQzJZNHZLUWRpYVVwRlQ0YlhsYjFSSGhMcHA4d3RtNk01VGdTdz09Il0sCgogICAgInVuZGljaS10eXBlcyI6IFsidW5kaWNpLXR5cGVzQDYuMjEuMCIsICIiLCB7fSwgInNoYTUxMi1pd0RacWcwUUFHcmc5UmF2NUg0bjBNNjRjM21rUjU5Y0o2d1FwKzdDNG5JMGdzbUV4YWVkYVlMTk80NGVUNEF0QkJ3amJUaUdQTWx0Mk1kMFQ5SDlKUT09Il0sCgogICAgInVzZS1zeW5jLWV4dGVybmFsLXN0b3JlIjogWyJ1c2Utc3luYy1leHRlcm5hbC1zdG9yZUAxLjYuMCIsICIiLCB7ICJwZWVyRGVwZW5kZW5jaWVzIjogeyAicmVhY3QiOiAiXjE2LjguMCB8fCBeMTcuMC4wIHx8IF4xOC4wLjAgfHwgXjE5LjAuMCIgfSB9LCAic2hhNTEyLVBwNkdTd0dQL05yUElyeFZGQUlrT1FleXc4bEZlbk9IaWpRV2tVVHJEdnJGNEFMcXlsUDJDL0tDa2VTOWRwVU0zS3ZZUlFobmE1dnQ3SUw5NStaUTl3PT0iXSwKCiAgICAidml0ZSI6IFsidml0ZUA4LjAuMTMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAibGlnaHRuaW5nY3NzIjogIl4xLjMyLjAiLCAicGljb21hdGNoIjogIl40LjAuNCIsICJwb3N0Y3NzIjogIl44LjUuMTQiLCAicm9sbGRvd24iOiAiMS4wLjEiLCAidGlueWdsb2JieSI6ICJeMC4yLjE2IiB9LCAib3B0aW9uYWxEZXBlbmRlbmNpZXMiOiB7ICJmc2V2ZW50cyI6ICJ+Mi4zLjMiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL25vZGUiOiAiXjIwLjE5LjAgfHwgPj0yMi4xMi4wIiwgIkB2aXRlanMvZGV2dG9vbHMiOiAiXjAuMS4xOCIsICJlc2J1aWxkIjogIl4wLjI3LjAgfHwgXjAuMjguMCIsICJqaXRpIjogIj49MS4yMS4wIiwgImxlc3MiOiAiXjQuMC4wIiwgInNhc3MiOiAiXjEuNzAuMCIsICJzYXNzLWVtYmVkZGVkIjogIl4xLjcwLjAiLCAic3R5bHVzIjogIj49MC41NC44IiwgInN1Z2Fyc3MiOiAiXjUuMC4wIiwgInRlcnNlciI6ICJeNS4xNi4wIiwgInRzeCI6ICJeNC44LjEiLCAieWFtbCI6ICJeMi40LjIiIH0sICJvcHRpb25hbFBlZXJzIjogWyJAdHlwZXMvbm9kZSIsICJAdml0ZWpzL2RldnRvb2xzIiwgImVzYnVpbGQiLCAiaml0aSIsICJsZXNzIiwgInNhc3MiLCAic2Fzcy1lbWJlZGRlZCIsICJzdHlsdXMiLCAic3VnYXJzcyIsICJ0ZXJzZXIiLCAidHN4IiwgInlhbWwiXSwgImJpbiI6IHsgInZpdGUiOiAiYmluL3ZpdGUuanMiIH0gfSwgInNoYTUxMi1NRnRqQllnem1TeG1nQTRSQWZqSXlYV3BHZTFvQUxuamdVVHp6VjdRTHgvVEt4Q3pqdE1INkZkOS9lVksrNUZnMXFOb3o1VkF3c21Ncy9Ob2ZybUp2dz09Il0sCgogICAgInZpdGVzdCI6IFsidml0ZXN0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvZXhwZWN0IjogIjQuMS42IiwgIkB2aXRlc3QvbW9ja2VyIjogIjQuMS42IiwgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6ICI0LjEuNiIsICJAdml0ZXN0L3J1bm5lciI6ICI0LjEuNiIsICJAdml0ZXN0L3NuYXBzaG90IjogIjQuMS42IiwgIkB2aXRlc3Qvc3B5IjogIjQuMS42IiwgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAiZXMtbW9kdWxlLWxleGVyIjogIl4yLjAuMCIsICJleHBlY3QtdHlwZSI6ICJeMS4zLjAiLCAibWFnaWMtc3RyaW5nIjogIl4wLjMwLjIxIiwgIm9idWciOiAiXjIuMS4xIiwgInBhdGhlIjogIl4yLjAuMyIsICJwaWNvbWF0Y2giOiAiXjQuMC4zIiwgInN0ZC1lbnYiOiAiXjQuMC4wLXJjLjEiLCAidGlueWJlbmNoIjogIl4yLjkuMCIsICJ0aW55ZXhlYyI6ICJeMS4wLjIiLCAidGlueWdsb2JieSI6ICJeMC4yLjE1IiwgInRpbnlyYWluYm93IjogIl4zLjEuMCIsICJ2aXRlIjogIl42LjAuMCB8fCBeNy4wLjAgfHwgXjguMC4wIiwgIndoeS1pcy1ub2RlLXJ1bm5pbmciOiAiXjIuMy4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBlZGdlLXJ1bnRpbWUvdm0iOiAiKiIsICJAb3BlbnRlbGVtZXRyeS9hcGkiOiAiXjEuOS4wIiwgIkB0eXBlcy9ub2RlIjogIl4yMC4wLjAgfHwgXjIyLjAuMCB8fCA+PTI0LjAuMCIsICJAdml0ZXN0L2Jyb3dzZXItcGxheXdyaWdodCI6ICI0LjEuNiIsICJAdml0ZXN0L2Jyb3dzZXItcHJldmlldyI6ICI0LjEuNiIsICJAdml0ZXN0L2Jyb3dzZXItd2ViZHJpdmVyaW8iOiAiNC4xLjYiLCAiQHZpdGVzdC9jb3ZlcmFnZS1pc3RhbmJ1bCI6ICI0LjEuNiIsICJAdml0ZXN0L2NvdmVyYWdlLXY4IjogIjQuMS42IiwgIkB2aXRlc3QvdWkiOiAiNC4xLjYiLCAiaGFwcHktZG9tIjogIioiLCAianNkb20iOiAiKiIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkBlZGdlLXJ1bnRpbWUvdm0iLCAiQG9wZW50ZWxlbWV0cnkvYXBpIiwgIkB0eXBlcy9ub2RlIiwgIkB2aXRlc3QvYnJvd3Nlci1wbGF5d3JpZ2h0IiwgIkB2aXRlc3QvYnJvd3Nlci1wcmV2aWV3IiwgIkB2aXRlc3QvYnJvd3Nlci13ZWJkcml2ZXJpbyIsICJAdml0ZXN0L2NvdmVyYWdlLWlzdGFuYnVsIiwgIkB2aXRlc3QvY292ZXJhZ2UtdjgiLCAiQHZpdGVzdC91aSIsICJoYXBweS1kb20iLCAianNkb20iXSwgImJpbiI6IHsgInZpdGVzdCI6ICJ2aXRlc3QubWpzIiB9IH0sICJzaGE1MTItNmx2amJTM3A5YjRDcmRDbWd1emJoMi80dW9YaEdFMnE3MVI0T1g1c3FGOVIxYm85WGQ2ZkdyTUFmdnA1d25DemxCbkZWZENPcDZvbnVUUVZibzhpVVE9PSJdLAoKICAgICJ3aHktaXMtbm9kZS1ydW5uaW5nIjogWyJ3aHktaXMtbm9kZS1ydW5uaW5nQDIuMy4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInNpZ2luZm8iOiAiXjIuMC4wIiwgInN0YWNrYmFjayI6ICIwLjAuMiIgfSwgImJpbiI6IHsgIndoeS1pcy1ub2RlLXJ1bm5pbmciOiAiY2xpLmpzIiB9IH0sICJzaGE1MTItaFVybWFXQmRWRGN4dllxbnloMDl6dW5LelJPV2piWlRpTnk4ZEJFamtTN2VoRURRaWJYSjdYdmxtdGJ3dVRjbFVpSXlOK0N5WFFENFZta284Zk5tOHc9PSJdLAoKICAgICJ3cmFwLWFuc2kiOiBbIndyYXAtYW5zaUA3LjAuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJhbnNpLXN0eWxlcyI6ICJeNC4wLjAiLCAic3RyaW5nLXdpZHRoIjogIl40LjEuMCIsICJzdHJpcC1hbnNpIjogIl42LjAuMCIgfSB9LCAic2hhNTEyLVlWR0lqMmthbUxTVHh3Nk5zWmpvQnhmU3dzbjB5Y2Rlc21jNHArUTIxYzV6UHVaMXBsK05meFZkeFB0ZEh2bU5WT1E2WFNZRzRBVXR5dC9GaTdEMTZRPT0iXSwKCiAgICAieTE4biI6IFsieTE4bkA1LjAuOCIsICIiLCB7fSwgInNoYTUxMi0wcGZGemVnZURXSkhKSUFtVExSUDJEd0hqZEY1czdqbzl0dXp0ZFF4QWhJTkNkdlMrM25HSU5xUGQwMEFwaHFKUi8wTGhBTlVTNi8rN1NDYjk4WU9mQT09Il0sCgogICAgInlhbWwiOiBbInlhbWxAMi45LjAiLCAiIiwgeyAiYmluIjogeyAieWFtbCI6ICJiaW4ubWpzIiB9IH0sICJzaGE1MTItMkF2aE5YM21iOHpkNlp5N0lOVHRTcGwxRjE1SFc2V25xajBzcldsa0tMY3BZbC9nTUlNSml5dUdxMktlSTJZRnhVUGpkbEIrM0xjMTBzZU1MdEw0Y0E9PSJdLAoKICAgICJ5YXJncyI6IFsieWFyZ3NAMTcuNy4yIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImNsaXVpIjogIl44LjAuMSIsICJlc2NhbGFkZSI6ICJeMy4xLjEiLCAiZ2V0LWNhbGxlci1maWxlIjogIl4yLjAuNSIsICJyZXF1aXJlLWRpcmVjdG9yeSI6ICJeMi4xLjEiLCAic3RyaW5nLXdpZHRoIjogIl40LjIuMyIsICJ5MThuIjogIl41LjAuNSIsICJ5YXJncy1wYXJzZXIiOiAiXjIxLjEuMSIgfSB9LCAic2hhNTEyLTdkU3p6UlErK0NLbk5JL2tyS25ZUlY3SktLUFVYTUVoNjFzb2FIS2c5bXJXRWh6RldoRm54UHhHbCs2OWNEMU91NjNDMTNOVVBDbm1JY3J2cUN1TTZ3PT0iXSwKCiAgICAieWFyZ3MtcGFyc2VyIjogWyJ5YXJncy1wYXJzZXJAMjEuMS4xIiwgIiIsIHt9LCAic2hhNTEyLXRWcHNKVzdEZGplY0FpRnBiSUIxZTNxeElRc0U2Tm9QYzUvZVRkcmJiSUM0aDBMVnNXaG5vYTNnK20ySGNsQkl1akh6c3haNFZKVkErR1V1YzIvTEJ3PT0iXSwKCiAgICAiem9kIjogWyJ6b2RANC40LjMiLCAiIiwge30sICJzaGE1MTIteXRFTkZqSUpGbDJVd1lnbGRlMmpjaFcySHdtNEdKRkxEaVNYV2RUckpRQklOOUZjeXA3bjREaHhKRWlXTkFKTVYxL0JxV2ZXL2trZzcxVURjSEp5VFE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQGVtbmFwaS9jb3JlIjogWyJAZW1uYXBpL2NvcmVAMS4xMC4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvd2FzaS10aHJlYWRzIjogIjEuMi4xIiwgInRzbGliIjogIl4yLjQuMCIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTIteXE2T2tKNHA4MkNBZlBsMHU5bVFlYlFIS1BKa1k3V3JJdWsyMDVjVFluWWUrazJaOFlCaDExRnJiUkcvSDZpaGlycWNhY09nbDJCSU84b3lNUUxlWHc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQGVtbmFwaS9ydW50aW1lIjogWyJAZW1uYXBpL3J1bnRpbWVAMS4xMC4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRzbGliIjogIl4yLjQuMCIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItZXd2WWxrODZ4VW9HSTB6UVJOcS9tQysxNlIxUWVEbEtReTIxS2kzb1NZWE5nTGI0NUdWMVA2QTBNKy9zNm55Q3VORHFlNVZwYVk4NEJ6WEd3VmJ3RkE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQGVtbmFwaS93YXNpLXRocmVhZHMiOiBbIkBlbW5hcGkvd2FzaS10aHJlYWRzQDEuMi4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRzbGliIjogIl4yLjQuMCIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItdVRJSTdPWUYrL01lcy9NcmNJT1lwNXlPdFNNTEJXU0lvTFBwY2d3aXBvaUtibGk2azMyMnRjb0ZzeG9JSXhQRHFXMDFTUUdBZ2tvNEV6WmkyQk52Mnc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQG5hcGktcnMvd2FzbS1ydW50aW1lIjogWyJAbmFwaS1ycy93YXNtLXJ1bnRpbWVAMS4xLjQiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHR5YnlzL3dhc20tdXRpbCI6ICJeMC4xMC4xIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvY29yZSI6ICJeMS43LjEiLCAiQGVtbmFwaS9ydW50aW1lIjogIl4xLjcuMSIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItM05RTk5nQTFZU2xKYi9rTUgxaWxkQVNQOUhXNy83a1luUkkyc3pXSmFvZmFTMWhXbWJHSTRIK2QzKzIyYUd6WFhOOUlKK24rR2lGVmNHaXBKUDE4b3c9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQHR5YnlzL3dhc20tdXRpbCI6IFsiQHR5YnlzL3dhc20tdXRpbEAwLjEwLjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9LCAiYnVuZGxlZCI6IHRydWUgfSwgInNoYTUxMi1Sb0J2SjJYMHd1S2xXRklqcndmZkd3MUlxWkhLUXF6SWNoS2FhZFpaZm5OcHNBWXAybU0waDM2SnRQQ2pOREFIR2dZZXovMTV1TUJwZkd3Y2hoaU1nZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS13YXNtMzItd2FzaS90c2xpYiI6IFsidHNsaWJAMi44LjEiLCAiIiwgeyAiYnVuZGxlZCI6IHRydWUgfSwgInNoYTUxMi1vSkZ1OTRIUWIrS1ZkdVNVUUw3d25wbXFuZm1Mc09BL25BaDZiNkVIMHdDRW9LMC9tUGVYVTZjM3dLRFY4M01rT3VIUFJIdFNYS0tVOTlJQmF6Uy8ydz09Il0sCgogICAgImNoYWxrL3N1cHBvcnRzLWNvbG9yIjogWyJzdXBwb3J0cy1jb2xvckA3LjIuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJoYXMtZmxhZyI6ICJeNC4wLjAiIH0gfSwgInNoYTUxMi1xcENBdlJsOXN0dU9IdmVLc243SG5jSlJ2djUwMXFJYWNLelFsTy8rTHd4YzkrMHEyd0x5djREZnZ0ODAvRFBuMnBxT0JzSmREaW9nWEdSOStPdndSdz09Il0sCgogICAgIm5leHQvcG9zdGNzcyI6IFsicG9zdGNzc0A4LjQuMzEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAibmFub2lkIjogIl4zLjMuNiIsICJwaWNvY29sb3JzIjogIl4xLjAuMCIsICJzb3VyY2UtbWFwLWpzIjogIl4xLjAuMiIgfSB9LCAic2hhNTEyLVBTMDhJYm9pYTltdHMvMnlnVjNlTHBZNWdoblVjZkxWL0VYVE9XMUUycVl4SktHR0JVdE5qTjc2RllIbk1zMzZSbUFSbjQxYkMwQVptbityUjBPVnBRPT0iXSwKICB9Cn0K" }, { "path": "metadata.json", "kind": "text", "content": '{\n "id": "pharmacy",\n "name": "Pharmacy",\n "tagline": "Licensed community pharmacy with prescription uploads, pharmacist consults, and OTC catalog.",\n "industry": "healthcare",\n "tags": ["healthcare", "regulated", "prescription"],\n "stability": "stable",\n "schemaType": "Pharmacy",\n "mock": {\n "seedName": "pharmacy",\n "seedBusinessId": "bus_wellspring_pharmacy"\n }\n}\n' }, { "path": "next.config.ts", "kind": "text", "content": 'import type { NextConfig } from "next";\n\n// Same-origin proxy target for the storefront API. The public key\n// decides: a real `cpk_live_\u2026` / `cpk_test_\u2026` only resolves against\n// hosted Cimplify, so browser cart writes go to the same place the\n// server catalogue reads come from. Anything else (`mock-dev`, empty)\n// falls back to the local `cimplify dev` mock in dev.\nconst publicKey = process.env.NEXT_PUBLIC_CIMPLIFY_PUBLIC_KEY?.trim() ?? "";\nconst keyTargetsHostedCimplify =\n publicKey.startsWith("cpk_live_") || publicKey.startsWith("cpk_test_");\nconst STOREFRONT_URL =\n process.env.NODE_ENV === "production" || keyTargetsHostedCimplify\n ? "https://storefronts.cimplify.io"\n : "http://127.0.0.1:8787";\n\nif (STOREFRONT_URL === "http://127.0.0.1:8787") {\n console.warn(\n "[cimplify] next.config resolved the local storefront API URL; production deploys must run with NODE_ENV=production.",\n );\n}\n\n// Cache Components (\'use cache\' + cacheTag/cacheLife) require Node-specific\n// setTimeout atomicity and serialize a postponed state that routinely exceeds\n// CF Workers\' 128MB zlib limit. We\'re on Cloudflare Workers via opennext, so\n// we stay on Next 16\'s "Previous Model" \u2014 `fetch.next.{revalidate,tags}` via\n// the SDK\'s `cacheOptions`, plus `export const revalidate` per page. See\n// https://nextjs.org/docs/app/guides/caching-without-cache-components.\nconst nextConfig: NextConfig = {\n async redirects() {\n return [\n { source: "/login", destination: "/account", permanent: false },\n { source: "/signup", destination: "/account", permanent: false },\n ];\n },\n async rewrites() {\n return [\n { source: "/api/v1/:path*", destination: `${STOREFRONT_URL}/api/v1/:path*` },\n { source: "/img/:path*", destination: `${STOREFRONT_URL}/img/:path*` },\n { source: "/elements/:path*", destination: `${STOREFRONT_URL}/elements/:path*` },\n { source: "/_mock/:path*", destination: `${STOREFRONT_URL}/_mock/:path*` },\n ];\n },\n images: {\n loader: "custom",\n loaderFile: "./lib/cimplify-loader.ts",\n remotePatterns: [\n { protocol: "http", hostname: "127.0.0.1", port: "8787", pathname: "/img/**" },\n { protocol: "http", hostname: "localhost", port: "8787", pathname: "/img/**" },\n { protocol: "http", hostname: "localhost", port: "3000", pathname: "/img/**" },\n { protocol: "https", hostname: "loremflickr.com", pathname: "/**" },\n { protocol: "https", hostname: "images.unsplash.com", pathname: "/**" },\n { protocol: "https", hostname: "static-tmp.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "storefrontassetscdn.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "cdn.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "res.cloudinary.com", pathname: "/cimplify/**" },\n ],\n },\n};\n\nexport default nextConfig;\n' }, { "path": "CLAUDE.md", "kind": "text", "content": "# CLAUDE.md\n\nThis project was scaffolded from a Cimplify storefront template (`cimplify init`).\n\n## Read these first\n\n- **`AGENTS.md`** at the project root \u2014 the file \u2194 `brand.X` field map for *this template's* industry, plus the architectural rules.\n- **`.claude/skills/cimplify-storefront/SKILL.md`** \u2014 the playbook for common tasks (rebrand, add a section, wire a Server Action, deploy, eject a component). Invoke it whenever you're asked to change content, palette, copy, or routing.\n\n## The two-line summary\n\n1. **Edit `lib/brand.ts`** for any visible string.\n2. **Edit `app/globals.css` `@theme` block** for any palette / radius / font change.\n\nThat covers ~95% of what merchants ask for. For anything else, follow the `cimplify-storefront` skill.\n\n## Don't do\n\n- Hardcode strings in pages or components.\n- Enable `cacheComponents: true` in `next.config.ts` \u2014 we're on Cloudflare Workers, where `'use cache'` postponed state blows past CF's 128MB zlib limit. This template stays on Next 16's \"Previous Model\" (ISR): `export const revalidate` per page + `cacheOptions: { revalidate, tags }` on SDK reads.\n- Add `'use cache'`, `cacheTag`, or `cacheLife` anywhere. Use the SDK's `cacheOptions` instead.\n- Use `unstable_cache` \u2014 it's gone in Next 16. Use SDK `cacheOptions` or `fetch.next.{revalidate,tags}`.\n- Run `bun test` (Bun's `vi` shim is incomplete) \u2014 use `bun run test:run`.\n" }, { "path": "app/about/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `About \u2014 ${brand.name}`,\n description: brand.description,\n};\n\nexport default function AboutPage() {\n const a = brand.about;\n // Title supports a single \\n for a hard line break.\n const titleParts = a.title.split("\\n");\n return (\n <article className="max-w-3xl mx-auto px-6 sm:px-8 py-16">\n <p className="text-[11px] font-mono uppercase tracking-[0.16em] text-primary mb-2">\n {a.eyebrow}\n </p>\n <h1 className="text-[clamp(2.25rem,5vw,3.5rem)] font-bold mb-6 -tracking-[0.025em] leading-tight">\n {titleParts.map((line, i) => (\n <span key={i}>\n {line}\n {i < titleParts.length - 1 && <br />}\n </span>\n ))}\n </h1>\n <div className="prose prose-lg max-w-none space-y-5 text-foreground/90 leading-relaxed">\n {a.paragraphs.map((p, i) => (\n <p key={i}>{p}</p>\n ))}\n {a.sections.map((s) => (\n <div key={s.heading}>\n <h2 className="text-2xl font-semibold mt-10 mb-3 -tracking-[0.02em]">\n {s.heading}\n </h2>\n <p>{s.body}</p>\n </div>\n ))}\n </div>\n </article>\n );\n}\n' }, { "path": "app/llms.txt/route.ts", "kind": "text", "content": 'import { getServerClient, tags, type Product } from "@cimplify/sdk/server";\nimport { brand } from "@/lib/brand";\nimport { getSiteUrl } from "@/lib/site-url";\n\nexport const revalidate = 3600;\n\nasync function buildLlmsTxt(SITE_URL: string): Promise<string> {\n const client = getServerClient();\n const [productsRes, categoriesRes, collectionsRes] = await Promise.all([\n client.catalogue.getProducts(\n { limit: 500 },\n { cacheOptions: { revalidate: 3600, tags: [tags.products()] } },\n ),\n client.catalogue.getCategories({\n cacheOptions: { revalidate: 3600, tags: [tags.categories()] },\n }),\n client.catalogue.getCollections({\n cacheOptions: { revalidate: 3600, tags: [tags.collections()] },\n }),\n ]);\n\n const products: Product[] = productsRes.ok ? productsRes.value.items : [];\n const categories = categoriesRes.ok ? categoriesRes.value : [];\n const collections = collectionsRes.ok ? collectionsRes.value : [];\n\n const lines: string[] = [];\n lines.push(`# ${brand.name}`);\n lines.push("");\n lines.push(`> ${brand.llms.summary}`);\n lines.push("");\n lines.push("## Browse");\n lines.push(`- [Home](${SITE_URL}/)`);\n lines.push(`- [Shop](${SITE_URL}/shop): Full catalogue with filter and sort.`);\n\n if (categories.length > 0) {\n lines.push("");\n lines.push("## Categories");\n for (const c of categories) {\n lines.push(\n `- [${c.name}](${SITE_URL}/categories/${c.slug})${c.description ? `: ${c.description}` : ""}`,\n );\n }\n }\n\n if (collections.length > 0) {\n lines.push("");\n lines.push("## Collections");\n for (const c of collections) {\n lines.push(\n `- [${c.name}](${SITE_URL}/collections/${c.slug})${c.description ? `: ${c.description}` : ""}`,\n );\n }\n }\n\n if (products.length > 0) {\n lines.push("");\n lines.push("## Products");\n for (const p of products) {\n const slug = p.slug ?? p.id;\n const price = `${brand.currency} ${p.default_price}`;\n const desc = p.description ? ` \u2014 ${p.description.replace(/\\s+/g, " ").slice(0, 200)}` : "";\n lines.push(`- [${p.name}](${SITE_URL}/products/${slug}) (${price})${desc}`);\n }\n }\n\n lines.push("");\n lines.push("## Information");\n lines.push(`- [About](${SITE_URL}/about)`);\n lines.push(`- [Support / FAQ](${SITE_URL}/faq)`);\n lines.push(`- [Terms of Service](${SITE_URL}/terms)`);\n lines.push(`- [Privacy Policy](${SITE_URL}/privacy)`);\n lines.push(`- [Sitemap (XML)](${SITE_URL}/sitemap.xml)`);\n lines.push("");\n lines.push("## Contact");\n lines.push(`- Email: ${brand.contact.email}`);\n lines.push(`- Phone: ${brand.contact.phone}`);\n lines.push(`- Address: ${brand.contact.address}`);\n\n return lines.join("\\n") + "\\n";\n}\n\n/**\n * `/llms.txt` \u2014 machine-readable site index for LLMs (per llmstxt.org).\n * Lets coding agents and chat assistants find products, categories, and\n * support pages without scraping HTML. Plain Markdown so it streams cheaply\n * into context windows.\n */\nexport async function GET(): Promise<Response> {\n const body = await buildLlmsTxt(await getSiteUrl());\n return new Response(body, {\n headers: {\n "Content-Type": "text/plain; charset=utf-8",\n "Cache-Control": "public, max-age=0, s-maxage=3600, stale-while-revalidate=86400",\n },\n });\n}\n' }, { "path": "app/contact/contact-form.tsx", "kind": "text", "content": `"use client";
|
|
1669
1669
|
|
|
1670
1670
|
import { useState } from "react";
|
|
1671
1671
|
|
|
@@ -2246,7 +2246,7 @@ export const brand: Brand = {
|
|
|
2246
2246
|
* the root layout prerenderable.
|
|
2247
2247
|
*/
|
|
2248
2248
|
export const SITE_URL = "https://example.com";
|
|
2249
|
-
` }, { "path": "lib/site-url.ts", "kind": "text", "content": 'import { SITE_URL } from "./site.config";\n\n/** Canonical absolute URL for this storefront. */\nexport async function getSiteUrl(): Promise<string> {\n return SITE_URL;\n}\n' }, { "path": "lib/cimplify-loader.ts", "kind": "text", "content": 'import type { ImageLoader } from "next/image";\n\nimport { assetUrl, isCimplifyAsset } from "@cimplify/sdk";\n\nconst cdnBase = process.env.NEXT_PUBLIC_CIMPLIFY_CDN_URL?.trim() || undefined;\n\nconst cimplifyImageLoader: ImageLoader = ({ src, width, quality }) => {\n if (isCimplifyAsset(src, cdnBase)) {\n return assetUrl(src, {\n base: cdnBase,\n w: width,\n quality,\n format: "auto",\n });\n }\n return src;\n};\n\nexport default cimplifyImageLoader;\n' }, { "path": "lib/cart.ts", "kind": "text", "content": '"use client";\n\nimport { useCart } from "@cimplify/sdk/react";\n\n/**\n * Reactive cart count for the header pill. Subscribes to the SDK cart\n * state \u2014 updates immediately on add / remove / quantity change.\n */\nexport function useCartCount(): { count: number } {\n const { itemCount } = useCart();\n return { count: itemCount };\n}\n' }, { "path": ".gitignore", "kind": "text", "content": "node_modules\n.next\n.open-next\nout\n.env\n.env.local\n.env*.local\n.DS_Store\n*.tsbuildinfo\nnext-env.d.ts\n" }, { "path": "package.json", "kind": "text", "content": '{\n "name": "__STOREFRONT_NAME__",\n "private": true,\n "version": "0.0.0",\n "scripts": {\n "dev": "concurrently -k -n mock,next -c blue,magenta \\"cimplify-mock --seed restaurant --quiet\\" \\"next dev\\"",\n "dev:storefront": "next dev",\n "dev:mock": "cimplify-mock --seed restaurant",\n "build": "next build",\n "start": "next start",\n "typecheck": "tsc --noEmit",\n "test": "vitest",\n "test:run": "vitest run",\n "check:brand": "vitest run __tests__/brand.test.ts",\n "check:cart": "vitest run __tests__/cart-flow.test.ts",\n "check:contract": "vitest run __tests__/contract.test.ts",\n "check": "bun run typecheck && bun run test:run"\n },\n "dependencies": {\n "@cimplify/sdk": "^0.56.0",\n "next": "^16.2.6",\n "react": "^19.0.0",\n "react-dom": "^19.0.0"\n },\n "devDependencies": {\n "@tailwindcss/postcss": "^4.2.4",\n "@types/node": "^22.10.0",\n "@types/react": "^19.0.0",\n "@types/react-dom": "^19.0.0",\n "concurrently": "^9.0.0",\n "tailwindcss": "^4.2.4",\n "typescript": "^5.9.3",\n "vitest": "^4.1.5"\n }\n}\n' }, { "path": "bun.lock", "kind": "binary", "content": "ewogICJsb2NrZmlsZVZlcnNpb24iOiAxLAogICJjb25maWdWZXJzaW9uIjogMSwKICAid29ya3NwYWNlcyI6IHsKICAgICIiOiB7CiAgICAgICJuYW1lIjogIl9fU1RPUkVGUk9OVF9OQU1FX18iLAogICAgICAiZGVwZW5kZW5jaWVzIjogewogICAgICAgICJAY2ltcGxpZnkvc2RrIjogIl4wLjU0LjAiLAogICAgICAgICJuZXh0IjogIl4xNi4yLjYiLAogICAgICAgICJyZWFjdCI6ICJeMTkuMC4wIiwKICAgICAgICAicmVhY3QtZG9tIjogIl4xOS4wLjAiLAogICAgICB9LAogICAgICAiZGV2RGVwZW5kZW5jaWVzIjogewogICAgICAgICJAdGFpbHdpbmRjc3MvcG9zdGNzcyI6ICJeNC4yLjQiLAogICAgICAgICJAdHlwZXMvbm9kZSI6ICJeMjIuMTAuMCIsCiAgICAgICAgIkB0eXBlcy9yZWFjdCI6ICJeMTkuMC4wIiwKICAgICAgICAiQHR5cGVzL3JlYWN0LWRvbSI6ICJeMTkuMC4wIiwKICAgICAgICAiY29uY3VycmVudGx5IjogIl45LjAuMCIsCiAgICAgICAgInRhaWx3aW5kY3NzIjogIl40LjIuNCIsCiAgICAgICAgInR5cGVzY3JpcHQiOiAiXjUuOS4zIiwKICAgICAgICAidml0ZXN0IjogIl40LjEuNSIsCiAgICAgIH0sCiAgICB9LAogIH0sCiAgInBhY2thZ2VzIjogewogICAgIkBhbGxvYy9xdWljay1scnUiOiBbIkBhbGxvYy9xdWljay1scnVANS4yLjAiLCAiIiwge30sICJzaGE1MTItVXJjQUJCKzRiVXJGQUJ3Ymx1VElCRXJYd3Zic1UvVjdUWldmbWJnSmZia3dpQnV6aVM5Z3hkT0RVeXVpZWNmZEdRODVqZ2xNVzZqdVMzK3o1VHNLTHc9PSJdLAoKICAgICJAYmFiZWwvcnVudGltZSI6IFsiQGJhYmVsL3J1bnRpbWVANy4yOS4yIiwgIiIsIHt9LCAic2hhNTEyLUppRFNoSDQ1ektIV3lHZTRaTlZSckNqQno4Tmg5VE1tWkcxa2g0UVRLOGhDQlRXQmk4RGEraTdzMWZKdzcvbFlwTTRjY2VwU05mcXpaL1F2QUJCaTVnPT0iXSwKCiAgICAiQGJhc2UtdWkvcmVhY3QiOiBbIkBiYXNlLXVpL3JlYWN0QDEuNS4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBiYWJlbC9ydW50aW1lIjogIl43LjI5LjIiLCAiQGJhc2UtdWkvdXRpbHMiOiAiMC4yLjkiLCAiQGZsb2F0aW5nLXVpL3JlYWN0LWRvbSI6ICJeMi4xLjgiLCAiQGZsb2F0aW5nLXVpL3V0aWxzIjogIl4wLjIuMTEiLCAidXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUiOiAiXjEuNi4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBkYXRlLWZucy90eiI6ICJeMS4yLjAiLCAiQHR5cGVzL3JlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgImRhdGUtZm5zIjogIl40LjAuMCIsICJyZWFjdCI6ICJeMTcgfHwgXjE4IHx8IF4xOSIsICJyZWFjdC1kb20iOiAiXjE3IHx8IF4xOCB8fCBeMTkiIH0sICJvcHRpb25hbFBlZXJzIjogWyJAZGF0ZS1mbnMvdHoiLCAiQHR5cGVzL3JlYWN0IiwgImRhdGUtZm5zIl0gfSwgInNoYTUxMi16MWdTQWxjZWQxeVkraU0rbUhERXRJa0Q4VUkzRWJzNTJNdUJQeHZWNmY1aFJ1dGsreHZDSC93dUI3aERxRHpLOUpHNUZvTXo1bmhycXRTczF3anQxQT09Il0sCgogICAgIkBiYXNlLXVpL3V0aWxzIjogWyJAYmFzZS11aS91dGlsc0AwLjIuOSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYmFiZWwvcnVudGltZSI6ICJeNy4yOS4yIiwgIkBmbG9hdGluZy11aS91dGlscyI6ICJeMC4yLjExIiwgInJlc2VsZWN0IjogIl41LjEuMSIsICJ1c2Utc3luYy1leHRlcm5hbC1zdG9yZSI6ICJeMS42LjAiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL3JlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgInJlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgInJlYWN0LWRvbSI6ICJeMTcgfHwgXjE4IHx8IF4xOSIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkB0eXBlcy9yZWFjdCJdIH0sICJzaGE1MTIteC9QRERDWXpvcVBwanJkeWIzVmN5eWxUSTJJalVYRXRZREdpNWZvaDdLc25tTkpJSWFWd0EyR0xnREgxZHBzMUdnWGlKYkE2MGhNK0F5dVRmUXpJdnc9PSJdLAoKICAgICJAY2ltcGxpZnkvc2RrIjogWyJAY2ltcGxpZnkvc2RrQDAuNTQuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYmFzZS11aS9yZWFjdCI6ICJeMS40LjEiLCAiY2xzeCI6ICJeMi4xLjEiLCAiZGF0ZS1mbnMiOiAiXjQuMS4wIiwgImxpYnBob25lbnVtYmVyLWpzIjogIjEuMTIuNDEiLCAicmVhY3QtZGF5LXBpY2tlciI6ICJeOS4xNC4wIiwgInRhaWx3aW5kLW1lcmdlIjogIl4zLjUuMCIsICJ6b2QiOiAiXjQuNC4zIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBwYXlzdGFjay9pbmxpbmUtanMiOiAiXjIuMjIuOCIsICJtc3ciOiAiPj0yLjAuMCIsICJyZWFjdCI6ICI+PTE3LjAuMCIsICJ2aXRlc3QiOiAiPj0yLjAuMCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkBwYXlzdGFjay9pbmxpbmUtanMiLCAibXN3IiwgInJlYWN0IiwgInZpdGVzdCJdLCAiYmluIjogeyAiY2ltcGxpZnktbW9jayI6ICJkaXN0L21vY2svY2xpLm1qcyIgfSB9LCAic2hhNTEyLVlVTi9sT3FWaUhjaTF2OVVTV1d3QVd0eTI5cEVYQmRMVHVLYXJTbDhFcGFmV2g1amtkR1oxUStOZTkvYmZnVFptUjhpVFVsdEE4VTdnbFYyRm9SU2dnPT0iXSwKCiAgICAiQGRhdGUtZm5zL3R6IjogWyJAZGF0ZS1mbnMvdHpAMS40LjEiLCAiIiwge30sICJzaGE1MTItUDVMVU5odGJqNllmSTNpSmp3NUVMOWVVQUc2T2l0RDBXM2ZXUWNwUWpEUmMvUUlzTDB0Uk51TzFQY0R2UGNjV0wxZlNUWFhkRTFkcytsOTVEVi9PRkE9PSJdLAoKICAgICJAZW1uYXBpL2NvcmUiOiBbIkBlbW5hcGkvY29yZUAxLjEwLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGVtbmFwaS93YXNpLXRocmVhZHMiOiAiMS4yLjEiLCAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTIteXE2T2tKNHA4MkNBZlBsMHU5bVFlYlFIS1BKa1k3V3JJdWsyMDVjVFluWWUrazJaOFlCaDExRnJiUkcvSDZpaGlycWNhY09nbDJCSU84b3lNUUxlWHc9PSJdLAoKICAgICJAZW1uYXBpL3J1bnRpbWUiOiBbIkBlbW5hcGkvcnVudGltZUAxLjEwLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTItZXd2WWxrODZ4VW9HSTB6UVJOcS9tQysxNlIxUWVEbEtReTIxS2kzb1NZWE5nTGI0NUdWMVA2QTBNKy9zNm55Q3VORHFlNVZwYVk4NEJ6WEd3VmJ3RkE9PSJdLAoKICAgICJAZW1uYXBpL3dhc2ktdGhyZWFkcyI6IFsiQGVtbmFwaS93YXNpLXRocmVhZHNAMS4yLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTItdVRJSTdPWUYrL01lcy9NcmNJT1lwNXlPdFNNTEJXU0lvTFBwY2d3aXBvaUtibGk2azMyMnRjb0ZzeG9JSXhQRHFXMDFTUUdBZ2tvNEV6WmkyQk52Mnc9PSJdLAoKICAgICJAZXNidWlsZC9haXgtcHBjNjQiOiBbIkBlc2J1aWxkL2FpeC1wcGM2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYWl4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi0xVkNJQ1d5cGVRS2hWYkU5b1cvc0phQW1qTHhoVnFhY2RrdlBMRWp3bHR0amZ3RU5SU0NsUzhFakJ6MEt6UnlGU0NQRElrdVhXMzRKZS92azd6ZEI3UT09Il0sCgogICAgIkBlc2J1aWxkL2FuZHJvaWQtYXJtIjogWyJAZXNidWlsZC9hbmRyb2lkLWFybUAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtIiB9LCAic2hhNTEyLVFOZFFFcHM3RGZGd0UzaFhpVTRCWmVPVjY4SEh6WXdHZDBOdGhoZDN1Q2trRUtLNy9SNk1UZ00wUDdIN0ZBczVwVS9ESVdzdmlNbUVHeEVveElaK1pRPT0iXSwKCiAgICAiQGVzYnVpbGQvYW5kcm9pZC1hcm02NCI6IFsiQGVzYnVpbGQvYW5kcm9pZC1hcm02NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItYkJ5NjlwZ2ZoTUd0Q253cEMveDVRaGZ4QXovY0JnUTllbmJ0d2pmNlY5bG5QSS9oTXlUOWlXcFIxYXJtMGwza3R0VHI0TDBLU0xwS21McC9pbEtTOUE9PSJdLAoKICAgICJAZXNidWlsZC9hbmRyb2lkLXg2NCI6IFsiQGVzYnVpbGQvYW5kcm9pZC14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImFuZHJvaWQiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1UVmhkVnRRSUZ1VnBJSVIyODJidGNHQzJvR1FvU2ZaZm1CZFRpcDJhbkNhVlljcVdsWlhHY2RjS0lVa2xmWDJ3ajBKa2xOWWd6MzlPQnFoMmNxWHZjUT09Il0sCgogICAgIkBlc2J1aWxkL2Rhcndpbi1hcm02NCI6IFsiQGVzYnVpbGQvZGFyd2luLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVkxZ2lDZk00bmxIRFdFZlNja016ZVdOZFFTMzFCUUdzOS9yb3V3NlViOTF0a0s3OWFJTVRIM3E5eEh2ekg4ZDB3RHJ1NUNpMGtXQjhiM3VwL25sMTZnPT0iXSwKCiAgICAiQGVzYnVpbGQvZGFyd2luLXg2NCI6IFsiQGVzYnVpbGQvZGFyd2luLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiZGFyd2luIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItQ0pzcnk4WkdNNVZGVmV5VVlCM2NkS3BkL0g2OVBZZXo0ZUpoMVcvdDM4dnp1dGRqRWp0UDdoQjZlTEtCb09keGNBbEN0RVlIelEvUEovb1U5STR1MEE9PSJdLAoKICAgICJAZXNidWlsZC9mcmVlYnNkLWFybTY0IjogWyJAZXNidWlsZC9mcmVlYnNkLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi15WXErMzlObFRSelUyWG1vUFc0bDVJZnBsOWZxU2swbkFKWU0vVi9XVUdQRUZmZWsxZXBMSEpJa1RRTTZiQnMxc3dBcGpPNW5XZ3ZyODQzZzZUanh1UT09Il0sCgogICAgIkBlc2J1aWxkL2ZyZWVic2QteDY0IjogWyJAZXNidWlsZC9mcmVlYnNkLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiZnJlZWJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLTBGZ3ZPSjZVVU1mbHNIU1BMemRmRG5uQkJWb0NEdEJUVnluL01yV2xvVU52cS81U0ZtaDEzbDNkdmdSUGtEaWhSeGI3N1kxN01icWJDQWEyc3RyTVFRPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtYXJtIjogWyJAZXNidWlsZC9saW51eC1hcm1AMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTIta3JvNGMwUDg1R01mRllxVzRUV09wdm1GOHJGU2hiV0duckxxbHpwNFgxVE5XalJZM0pNWVVmREN0T3hQS09JWThCMFdDOEhONTFoR1A0STRoejRBYVE9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1hcm02NCI6IFsiQGVzYnVpbGQvbGludXgtYXJtNjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi0rODlVc1FUZlhkbWpJdlpTNm5Vbk9PTG9YbmtVVEI5aFI1UUFlTHJRZHpPU1dadk5TQVhBdGNSREhXdHFBVXRBbXY3Wk0xV1BPT2VTeER6enpNb2dpUT09Il0sCgogICAgIkBlc2J1aWxkL2xpbnV4LWlhMzIiOiBbIkBlc2J1aWxkL2xpbnV4LWlhMzJAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJpYTMyIiB9LCAic2hhNTEyLXlURWpvYXB5OFVQM3J2OGRCMGlwM0FmTXBSYnloU04zK2hZOG1vL2k0UVhGZUR4bWlZYkVLcDNaUmpCS2NPUDg2MlVhNGIxUERmd2x2YnV3WTdoSUdRPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtbG9vbmc2NCI6IFsiQGVzYnVpbGQvbGludXgtbG9vbmc2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItTmVxcVlrcmNHekZ3aTZDR1JHTk1PaldHR1NZT3Bxd0NqUzlmdmFVbFg1czN6d090bjFxd2cxczJpRTJzdkJlNFEvWU9HMXE2ODc1bGNBb1FLL0Y0VkE9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1taXBzNjRlbCI6IFsiQGVzYnVpbGQvbGludXgtbWlwczY0ZWxAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJub25lIiB9LCAic2hhNTEyLUljdlRsRjlkdExyZkwvTThXZ05JL3FKWUJFTlAzZWtnc0hiWVVJekV6cTVYSnp6VkVWL2ZYWTlXRlBmRUVYbXUzY2sycUpQOExHL3AzUThmN1pjMlhnPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtcHBjNjQiOiBbIkBlc2J1aWxkL2xpbnV4LXBwYzY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAicHBjNjQiIH0sICJzaGE1MTItSE95MGFMVEpUVnRvVGVHWmg0SFNYYU82TTk1cXU0azVsSmNINGd4djU2aWF5Y2Z6MVM4R08vNUpoNlg0WTFZaUkwaDdjUnlMaStIaXhNUis4OHN3YWc9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1yaXNjdjY0IjogWyJAZXNidWlsZC9saW51eC1yaXNjdjY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1pOEpVREF1ZnB6OWpPem80eUlTaENUY1h6UzA3dkVnV3p5WDNOSDJHN0xFRlZnckxFaGp3TDNhakZFNGZaSTNJNFpnaU03SkgzR1E3UmVPYlJPdlNVQT09Il0sCgogICAgIkBlc2J1aWxkL2xpbnV4LXMzOTB4IjogWyJAZXNidWlsZC9saW51eC1zMzkweEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogInMzOTB4IiB9LCAic2hhNTEyLWpGbnUrNlViTGx6SWpQUXBXQ05oNVF0cmNOZk1MamdJYXZud1BRQWZvR3g0cTE3b2NPVTlNc1EyUVZ2Rnh3UW9XcFpUOER2VExvb1R2bU9RWGtPNTFnPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgteDY0IjogWyJAZXNidWlsZC9saW51eC14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItNmUwY3ZYd3pPblZXSkhxK21za1A4RE5TcktCcjFiVUxCdm5GTHBjMUtZK2QraXJaU2daMDJUR3NlNUZzYWZLUzVqZzJlNHBidks2VFBYYUYvQTYrQ0E9PSJdLAoKICAgICJAZXNidWlsZC9uZXRic2QtYXJtNjQiOiBbIkBlc2J1aWxkL25ldGJzZC1hcm02NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibm9uZSIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItdlVua0JZeFpXNGhML2llOTFoU3FhU05qdWxPbllYRTFWU0x1c252SGcydTNqZXdKQnozWXpCOStvQ3c4REFCZVZxWkdnOTR0OXR5WkZvSG1hOGdXWlE9PSJdLAoKICAgICJAZXNidWlsZC9uZXRic2QteDY0IjogWyJAZXNidWlsZC9uZXRic2QteDY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJub25lIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItWEFnOHBJUW41Q3poT0I4b2RJY0FtNDJRc09mYTk4U0JlS1VkbzR4YThPdlg4TGJNWnFFdGdlV0U5UC9XeHQ3TWxHMlFxdmpHdGhzK25xNDhUclVpS3c9PSJdLAoKICAgICJAZXNidWlsZC9vcGVuYnNkLWFybTY0IjogWyJAZXNidWlsZC9vcGVuYnNkLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJvcGVuYnNkIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1DdDJXY0ZFQU5sRkR0cDFuVkFYU05CUER4eVUrajcrdElkLy9pSFhVMmYvbE41QW1PNHpMeWhEY3BSNUN6MXIwOG1WeHp0M0pweXQ0UG1YUTFPNis3QT09Il0sCgogICAgIkBlc2J1aWxkL29wZW5ic2QteDY0IjogWyJAZXNidWlsZC9vcGVuYnNkLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAib3BlbmJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLXhBR0doeU9ROU90bTFYdThOVDFpZkdMbkE2TTNzSnhaNml4eWxiK3ZJVVZ6dnZkNkdPQUxwd1FyWXJ0bFBvdU1xZC92U2JnZWh6NkhhVms0KzdBZmh3PT0iXSwKCiAgICAiQGVzYnVpbGQvc3Vub3MteDY0IjogWyJAZXNidWlsZC9zdW5vcy14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogInN1bm9zIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItTXcrdHp5NHBwNndaRUswK0x3cjc2cFdManJ0am1KeVVCMjN0SEtxRURQNzRSM3E5NWx1WS9iWHFYWmVZbDROWWx2d09xb1JLbEluUWlhbGdDS3k2N1E9PSJdLAoKICAgICJAZXNidWlsZC93aW4zMi1hcm02NCI6IFsiQGVzYnVpbGQvd2luMzItYXJtNjRAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1BVlVQNDI4VlFUU2RkZ3V6OWRPOW5nYitFNWFTY3lnN25PZUpEckYxSFBZdTU1NWdtemEzYkRHTVBobVZYTDhzdkRTb3FQQ3NDUGpiMjY1eUcva0xLUT09Il0sCgogICAgIkBlc2J1aWxkL3dpbjMyLWlhMzIiOiBbIkBlc2J1aWxkL3dpbjMyLWlhMzJAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJpYTMyIiB9LCAic2hhNTEyLWkxc1crMWkrb1d2UXpTZ2ZSY3h4RzJrNEk5bjNPOU5ScXk4VSt1dWdhVDJEeTdrTE85WTd3STcyaGFPYWh4Y2VNWDhoWkF6Z0dvdTFGaG5kUmxkeFJnPT0iXSwKCiAgICAiQGVzYnVpbGQvd2luMzIteDY0IjogWyJAZXNidWlsZC93aW4zMi14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItbk9UMnZaTnc2aEorejQzb1AxU1BlYS9HLzZBYk42WCtiR05oTnVxOE50Ukh5NHdzTWh3NzY1SUtMTm1uamVrN0d2aldCWVE4UTVWQm9ZVEZnOXkxVVE9PSJdLAoKICAgICJAZmxvYXRpbmctdWkvY29yZSI6IFsiQGZsb2F0aW5nLXVpL2NvcmVAMS43LjUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGZsb2F0aW5nLXVpL3V0aWxzIjogIl4wLjIuMTEiIH0gfSwgInNoYTUxMi0xSWg0V1RXeXcwK2xLeUZNY0JIR2JiNVU1RnR1SEp1dWpveXlyNXpUYVdTNUVZTWVUNkpiMkF1RGVmdHNDc0V1Y2hPK21NMmlqNStxOWNyaHlkekxoUT09Il0sCgogICAgIkBmbG9hdGluZy11aS9kb20iOiBbIkBmbG9hdGluZy11aS9kb21AMS43LjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGZsb2F0aW5nLXVpL2NvcmUiOiAiXjEuNy41IiwgIkBmbG9hdGluZy11aS91dGlscyI6ICJeMC4yLjExIiB9IH0sICJzaGE1MTItOWdaU0FJNVhNMzY4ODBQUE1tLy85ZGZpRW5nWW9DNkFtMml6RVMxRkY0MDZZRnNqdnlCTW1lSjJnNFNBanUzeFd3dHV5bk5SRkwyczloZ3hwTEk1U1E9PSJdLAoKICAgICJAZmxvYXRpbmctdWkvcmVhY3QtZG9tIjogWyJAZmxvYXRpbmctdWkvcmVhY3QtZG9tQDIuMS44IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBmbG9hdGluZy11aS9kb20iOiAiXjEuNy42IiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgInJlYWN0IjogIj49MTYuOC4wIiwgInJlYWN0LWRvbSI6ICI+PTE2LjguMCIgfSB9LCAic2hhNTEyLWNDNTJiSHdNL24vQ3hTODdGSDB5V2RuZ0VacmpkdExXL3FWcnVvNjhxZytwcks3WlE0WUdkdXQyR3lEVnBvR2VBWWUvaDg5OXJWZU9WbTZPaTQwazJBPT0iXSwKCiAgICAiQGZsb2F0aW5nLXVpL3V0aWxzIjogWyJAZmxvYXRpbmctdWkvdXRpbHNAMC4yLjExIiwgIiIsIHt9LCAic2hhNTEyLVJpQi95SWg3OHBjSXhsNmxMTUcwQ2dCWEFaMlkwZVZIcU1QWXVndSs5VTBBZVQ2WUJlaUpwZjdsYmRKTkl1Z0ZQNVNJandOUmdvNERoUjFReGkyNkdnPT0iXSwKCiAgICAiQGltZy9jb2xvdXIiOiBbIkBpbWcvY29sb3VyQDEuMS4wIiwgIiIsIHt9LCAic2hhNTEyLVRkNzZxN2o1N28vdExWZGdTNzQ2Y1lBUmZTeXhrOGlFZlJ4ZXdMOWg0T016WWhiVzRUQWNwcGwwbVQ0ZXlxWGRkaDZML2p3b003NW1vN2l4YS9wQ2VRPT0iXSwKCiAgICAiQGltZy9zaGFycC1kYXJ3aW4tYXJtNjQiOiBbIkBpbWcvc2hhcnAtZGFyd2luLWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiAiMS4yLjQiIH0sICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLWltdFEzV01KWGJNWTRmeGIvTmRwNkhCVE5WdFdDVUkwV2RvYnloZUdmNSthZDZ4WDhWSURPOHUyeEU0cWMvZnIwOENLRy83ZERzZUZ0bjZNNmcvcjN3PT0iXSwKCiAgICAiQGltZy9zaGFycC1kYXJ3aW4teDY0IjogWyJAaW1nL3NoYXJwLWRhcndpbi14NjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWRhcndpbi14NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1ZTkVGQUYvNEtRL1BlVzBOK3IrYVZWc29JWTAvcXh4aWtGMlNXZHArTlJrbU1CN3k5TEJaQVZxUTR5aEdDbS9IM0gyNzBPU3lrcW1RTUtMQmhCSkRFdz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjRAMS4yLjQiLCAiIiwgeyAib3MiOiAiZGFyd2luIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi16cWpqbzdSYXRGZkZvUDBNa1E1MWpmdUZaQm5WRTJwUmlheWRLSjFHL3JIWnZuc3JIQU9jUUFMSWk5c0E1Y281eGVuUWRUdWdDdnRiMWN1Zjc4VmY0Zz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4teDY0IjogWyJAaW1nL3NoYXJwLWxpYnZpcHMtZGFyd2luLXg2NEAxLjIuNCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi0xSU9kNXhmVmhsR3dYK3pYdjJOOTNrMHlNT052VWxBTnlsYkp3MWVUYWg4Sy9KdHBpMTVLQytXU2lhWC9uQm1ibTJIeFJNMWdaMG5TZGpTc3JaYkdLZz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm0iOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm1AMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybSIgfSwgInNoYTUxMi1iRkk3eGNLRkVMZGlOQ1ZvdjhlNDRJYTR1MmJ5QStsM1h0c0FqK1E4dGZDd082QlE4aURvallkdm9QTXFzS0RrdW9PbytYNkhaQTBzMHExMUFOTVE4QT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm02NCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybTY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1leGNqWDhEZnNJY0oxMHgxS3pyNFJjV2UxZWRDOVBxdURSUlB4M1lWQ3ZRditVNXA3WWluMnMzMmZ0emlrWG9qYjFQSUZjLzlNdDI4L3kraVJrbGtydz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1wcGM2NCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi1GTXV2R2lqTERZRzZsVytiL1V2eWlsVVd1NUF5dSszcjJkMVM4bm90aUdDSXlZVS83NmVpZzFVZk1ta1o3dndnT3J6S3psUWJGU3VRZmdtN0dZVVBwQT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1yaXNjdjY0IjogWyJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgtcmlzY3Y2NEAxLjIuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1vVkRiY1I0elVDMGNlODJ0ZXViU20reDZFVGl4dEtaQmgvcWJSRUlPY0kzY1VMekR5YjE4U3IvV2N5eDdOUlFlUXpPaUhUTmJaRkYxVXdQUzJzY3lHQT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1zMzkweCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXMzOTB4QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJzMzkweCIgfSwgInNoYTUxMi1xbXA5VnJ6Z1BnTW9HWnlQdnJRSHFrMDJ1eWpBMC9RclRPMjZUcWs2bDRaVjBNUFdJVzZMVGtxT0lvditKMXlFdTdNYkZRYURwd2R3SktoYkp2dVJ4UT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjRAMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi10SnhpaUxzbUhjOUF4MWJ6M29hT1lCVVJUWEdJUkRPREJxaHZlVkhvbnJISjkvK2s4OXFiTGwwYmNKbnMrZTR0NHJ2YU5CeGFFWnNGdFNmQWRxdVBydz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjRAMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLUZWUUh1d3gxSUl1Tm93OVFBYllVekorRW44S2NWbTlMazUrdUdVUUpIYVptTUVDWm1PbGl4OUhuSDduMVRSa1hNUzBwR3hJSm9rSVZCOVN1cVpHR1h3PT0iXSwKCiAgICAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4bXVzbC14NjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wteDY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItK0xweUJrN0w0NFpJWHd6L1ZZZmdsYVgvb2t4ZXpFU2M2VXhEU295bzJLczZKeGM0WTdzR2pwZ1U5czRQTWdxZ2pqMWdaQ3lsVGllTmFtcUExTUY3RGc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4LWFybSI6IFsiQGltZy9zaGFycC1saW51eC1hcm1AMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybSI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItOWRMcXN2d3RnMXV1WEJHWktzeGVtOTU5NSt1anYwc0o2Vmk4d2NUQU5TRnB3Vi9HT05hdDVlQ2t6UW8vMU82elJJa2gwbS84KzVCanJScjdqRFVTWnc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4LWFybTY0IjogWyJAaW1nL3NoYXJwLWxpbnV4LWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm02NCI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1iS1F6YUpSWS9ia1BPWHlLeDVFVnVwN3FrYW9qRUNHNk5MWXN3Z2t0T1pqYVhlY1NBZUNXaVp3d2lGZjMvWStPMUhyYXVpRTNGVnNHeEZnOGMyNHJaZz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGludXgtcHBjNjQiOiBbIkBpbWcvc2hhcnAtbGludXgtcHBjNjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0IjogIjEuMi40IiB9LCAib3MiOiAibGludXgiLCAiY3B1IjogInBwYzY0IiB9LCAic2hhNTEyLTd6em53TmFxVzZZdHNmckdHREE2QlJrSVNLQUFFMUpvMFFkcE5ZWE5NSHUyKzBkVHJQZmxUTE5rcGM4bDdNVVA1TTE2WkpjVXZ5c1ZXV3JNZWZacXVBPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eC1yaXNjdjY0IjogWyJAaW1nL3NoYXJwLWxpbnV4LXJpc2N2NjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXJpc2N2NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi01MWdKdUxQVEthN3BpWVBhVnM4R21CeW83L1U3LzdUWk9xK2NuWEpJSFpLYXZJUkhBUDc3ZTNOMkhFbDNkZ2lxZEQvdzB5VWZpSm5JSTc3UHVEREZkdz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGludXgtczM5MHgiOiBbIkBpbWcvc2hhcnAtbGludXgtczM5MHhAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXMzOTB4IjogIjEuMi40IiB9LCAib3MiOiAibGludXgiLCAiY3B1IjogInMzOTB4IiB9LCAic2hhNTEyLW5RdENrMFBkS2ZobzNlQzVNcmJRb2lnSjJnZDFDZ2RkVU1rYWJVaityQmV2czh0WjJjVUxPeDQ2RTdveVgrMDRXR2ZBQmdJd21NQzBWcWllVGlSNGpnPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eC14NjQiOiBbIkBpbWcvc2hhcnAtbGludXgteDY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLU1FemQ4SFBLeFZ4VmVud0FhK0pSUHdFQzdRRmpvUFd1UzVOWm5CdDZCM3B1N0VHMkdlMGlkMW9MSFpwUEpkbjNPUUsrQlFEaXc5elN0aUhCVEpRUVFRPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eG11c2wtYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGludXhtdXNsLWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItZnBySlI2R3RSc010Nkt5ZnE0NElzQ2hWWmVHTjk3Z1REMzMxd2VSMWV4MWMxcnlwREVBQk42VG0yeGExd0U2bFliNURkRW5rMDNOWlBxQTdJZDIxeWc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4bXVzbC14NjQiOiBbIkBpbWcvc2hhcnAtbGludXhtdXNsLXg2NEAwLjM0LjUiLCAiIiwgeyAib3B0aW9uYWxEZXBlbmRlbmNpZXMiOiB7ICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXhtdXNsLXg2NCI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSmc4d05UMU1Vekl2aEJGeFZpcXJFaFdER3pxeW1vM3NWN3o3WnNhV2JaTkRMWFJKWm9SR3JqdWxwNjBZWXRWNHdmWThWSUtjV2lkam9qbExjV3JkOFE9PSJdLAoKICAgICJAaW1nL3NoYXJwLXdhc20zMiI6IFsiQGltZy9zaGFycC13YXNtMzJAMC4zNC41IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvcnVudGltZSI6ICJeMS43LjAiIH0sICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1PZFdURWlWa1kyUEh3cWtiQkk4ZnJGeFFRRmVrSGFTU2tVSUprd3pjbFdaZTY0TzFYNFVsVWpxcXFMYVBiVXBNT1FrNkZCdS9IdGxHWE5ibElzMGh1dz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzItYXJtNjQiOiBbIkBpbWcvc2hhcnAtd2luMzItYXJtNjRAMC4zNC41IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1XUTNBZ1dDV1lTYjJ5dCtJRzhtbkM2SmRrOVdoczdPMGd4cGhibHNMdmRoU3BTVHRtdTY5WkcxR2tiNk51dnhzTkFDd2lQVjZjTlNaTnp0MEtQc3c3Zz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzItaWEzMiI6IFsiQGltZy9zaGFycC13aW4zMi1pYTMyQDAuMzQuNSIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAiaWEzMiIgfSwgInNoYTUxMi1GVjltLzdObWVDbVNIREQ1ajQrNHBOSThDcDNhVytKdkxvWGNUVW8wSXF5alNmQVpKOGRJVW1pangxcWFKc0lpVStIb3N3NnhNNUtpakFXUkpDU2dOZz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzIteDY0IjogWyJAaW1nL3NoYXJwLXdpbjMyLXg2NEAwLjM0LjUiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi0rMjlZTXNxWTIvOWVGRWlXOTNlcVdudUxjV2N1Zm93WGV3d1NOSVQ2VXdaZFVVQ3JNM29Gak1XSC9aNi9UTW1iNGhsRmVubWZBVmJwV2V1cDJqcnlDdz09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogWyJAanJpZGdld2VsbC9nZW4tbWFwcGluZ0AwLjMuMTMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjIjogIl4xLjUuMCIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjQiIH0gfSwgInNoYTUxMi0ya2t0LzduaUo2TWdFUHhGMGJZZFE2ZXRaYUErZlF2RGNMS2NraHkxeUlRT3phb0tqQkJqU2o2My9hTFZqWUUzcWhSdDVkdk0rdVV5ZkNnNlVLQ0JiQT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3JlbWFwcGluZyI6IFsiQGpyaWRnZXdlbGwvcmVtYXBwaW5nQDIuMy41IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogIl4wLjMuNSIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjQiIH0gfSwgInNoYTUxMi1MSTl1LytsYVlHNERzMVRES1NKVzJZUHJJbGNWWU93aTJmVUM2eEI0M2x1ZUNqZ3hWNGxmZk9DWkN0WUZpSDZUTk9YK3RRS1h4OTdUNElLSGJoeUhFUT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3Jlc29sdmUtdXJpIjogWyJAanJpZGdld2VsbC9yZXNvbHZlLXVyaUAzLjEuMiIsICIiLCB7fSwgInNoYTUxMi1iUklTZ0NJalAyMC90YldTUFdNRWk1NFFWUFJaRXhrdUQ5bEpMK1VJeFVLdHdWSkE4d1cxVHJiMWpNczFSRlhvMUNCVE5aLzVocEM5UXZtS1dkb3BLdz09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3NvdXJjZS1tYXAiOiBbIkBqcmlkZ2V3ZWxsL3NvdXJjZS1tYXBAMC4zLjExIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogIl4wLjMuNSIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjUiIH0gfSwgInNoYTUxMi1aTXAxVjhaRmNQRzVkSVduUUxyM05TSTFNaUNVN1VFVGRTL0EwRzhWL1hXSHZKdjNac0ZxdXRKbjFZNVJQbUFQWDZGM0JpRTM5N09xdmVVLzlOQ3VJQT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3NvdXJjZW1hcC1jb2RlYyI6IFsiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjQDEuNS41IiwgIiIsIHt9LCAic2hhNTEyLWNZUTkzMTBncnF4dWVXYmwrV3VJVUlhaVVhRGNqN1dPcTVmVmhFbGpOVmdSZk9VaFk5ZnkyelR2Zm9xV3NuZWJoOFNsNzBWU2NGYklDdkpuTEtCME9nPT0iXSwKCiAgICAiQGpyaWRnZXdlbGwvdHJhY2UtbWFwcGluZyI6IFsiQGpyaWRnZXdlbGwvdHJhY2UtbWFwcGluZ0AwLjMuMzEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvcmVzb2x2ZS11cmkiOiAiXjMuMS4wIiwgIkBqcmlkZ2V3ZWxsL3NvdXJjZW1hcC1jb2RlYyI6ICJeMS40LjE0IiB9IH0sICJzaGE1MTItenpOUitTZFFTREp6Yzhqb2FlUDhRUW9DUXI4TnVZeDJkSUl5dGwxUWVCRVpISjl1VzZoZWJzcllnYno4aEp3VVFhbzNUV0NNdG1mVjhOdTF0d09MQXc9PSJdLAoKICAgICJAbmFwaS1ycy93YXNtLXJ1bnRpbWUiOiBbIkBuYXBpLXJzL3dhc20tcnVudGltZUAxLjEuNCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAdHlieXMvd2FzbS11dGlsIjogIl4wLjEwLjEiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQGVtbmFwaS9jb3JlIjogIl4xLjcuMSIsICJAZW1uYXBpL3J1bnRpbWUiOiAiXjEuNy4xIiB9IH0sICJzaGE1MTItM05RTk5nQTFZU2xKYi9rTUgxaWxkQVNQOUhXNy83a1luUkkyc3pXSmFvZmFTMWhXbWJHSTRIK2QzKzIyYUd6WFhOOUlKK24rR2lGVmNHaXBKUDE4b3c9PSJdLAoKICAgICJAbmV4dC9lbnYiOiBbIkBuZXh0L2VudkAxNi4yLjYiLCAiIiwge30sICJzaGE1MTItZ2Q4SG9ITjR1Zmo3M1dtUjNKbVZvbHJwSlI0N0lMSzZMb3VQNXhFbFBnbGFWeGlyNmUxYTdWenZUdkRXa09vUFhUOXJra1R6eUN4QnU0eWVaZlp3Y3c9PSJdLAoKICAgICJAbmV4dC9zd2MtZGFyd2luLWFybTY0IjogWyJAbmV4dC9zd2MtZGFyd2luLWFybTY0QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVpKR2trY05mWWdyck1rcU9kWjd6b0xhMVRPeTBxcGNNZmsvejRNaC9GS1V6NDBnVk8rSE5RV3FtTHhmNjdaNVdCNjREUnAwZGhFYnlIZmVsKzZzSlVnPT0iXSwKCiAgICAiQG5leHQvc3djLWRhcndpbi14NjQiOiBbIkBuZXh0L3N3Yy1kYXJ3aW4teDY0QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi12L1lMQkhJWTEzMkNlZDNwdUJKN1lKS3cxbHFzQ3JnY05vMmFSSmxDRXlRcnJDZVJKbHZHbG5teGhQeE5RSTNLRTNOMURONXI5VFBOUHZrYTNucTVSUT09Il0sCgogICAgIkBuZXh0L3N3Yy1saW51eC1hcm02NC1nbnUiOiBbIkBuZXh0L3N3Yy1saW51eC1hcm02NC1nbnVAMTYuMi42IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1SUE92cWxZQmJjUWprejlWUVFEWjJUMmJBUklqWFpWMUtGbHQrVjJNcjZTVy9lNEk5ZmNLc2FBMGhkeWYyRkhvVGxzVjJ4bkJkNVk5MTJyUC8xQ2U2dz09Il0sCgogICAgIkBuZXh0L3N3Yy1saW51eC1hcm02NC1tdXNsIjogWyJAbmV4dC9zd2MtbGludXgtYXJtNjQtbXVzbEAxNi4yLjYiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVVSVVR1MStkTWt4SnNQRmdtK09lRXZxOXdmNXN1ancwRXZnWXk4MFRER0hUU0xUbklIZXFiMEV1OEEzc0M5NUlSZ2plalFMK2tDNG13KzR5UHhpQVhBPT0iXSwKCiAgICAiQG5leHQvc3djLWxpbnV4LXg2NC1nbnUiOiBbIkBuZXh0L3N3Yy1saW51eC14NjQtZ251QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLURPajE4Mm1QVjhHM1VrcmF5TG9SRU01WUVZSStEazV3djdPeDl4bDFmRmliQUVMRXNGRDBsRFBmSEllSUxsdXRNTWZkeWhsellQRUxHM3BldUthdXJ3PT0iXSwKCiAgICAiQG5leHQvc3djLWxpbnV4LXg2NC1tdXNsIjogWyJAbmV4dC9zd2MtbGludXgteDY0LW11c2xAMTYuMi42IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSEtRNVNQL1YvdWI3M1V2RjduL3plSmx4azJrTG10TDdXenJnNFdmbWtqbU5vczVvbkoydEt1N3laT1BkTDE4QTZTdmZuM21heDI5eW0rcnk3TmtLNGc9PSJdLAoKICAgICJAbmV4dC9zd2Mtd2luMzItYXJtNjQtbXN2YyI6IFsiQG5leHQvc3djLXdpbjMyLWFybTY0LW1zdmNAMTYuMi42IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1MWlhwVGxQeVM1djdIaFNtbnZzTEdQM2lJWWdZT0JuYzhyOEFybFQ1NXNHSFY4OWJSMkhsRGRCaldRK1BZNlNKTW1rOFR1VkdGdXhhbG5QM2svMER3Zz09Il0sCgogICAgIkBuZXh0L3N3Yy13aW4zMi14NjQtbXN2YyI6IFsiQG5leHQvc3djLXdpbjMyLXg2NC1tc3ZjQDE2LjIuNiIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLUYwKzRpMGg5SjZDNGVFM0VBUFdzb0NrN1VXL2Riek9qeXp4WTBxbkRVT1lGdTZGRm1kWjZsOTcvWGRWMy9OejNWWXlPN1VXanlFSlVYa0dxY29YZk1BPT0iXSwKCiAgICAiQG94Yy1wcm9qZWN0L3R5cGVzIjogWyJAb3hjLXByb2plY3QvdHlwZXNAMC4xMzAuMCIsICIiLCB7fSwgInNoYTUxMi1pYkQydXN4OUpSdTdmNXB1MnRNS01JNGNwQTROZ1hKUW9ZUlA0cFE3UHhtbjFsNmsvNTNxV3RRV1pheWhZeTNYNFFaa3Q5ME90K21KRWFlWG91aW82UT09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWFuZHJvaWQtYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLWFuZHJvaWQtYXJtNjRAMS4wLjEiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItZkpJM0kwcjNDM09qL3pkQkNwYUNtQlJaWWYwN3hwYXE0eUNmRERvU0ZtK2JlV056YklsMjZwdVc4UnJhVWR1Z29Kdy85NXplck5PbjZqYXNBaHpTbWc9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1kYXJ3aW4tYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLWRhcndpbi1hcm02NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLWNLbkFoV0VzVjdUUGNBLzVFQXRlRHA2S2NKWkJRMkcrQnFFN3pheU1NaTdrTXZ3UnNidjdXVDlhT25uMFdObDRTS0VJZjQzdmpTMzFpVVB1ODBuelhnPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NCI6IFsiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1ZS3JWd1FqSVJCUG8rNUcvdTAzd0dqYmR5NHE3cHl6Q2U5M0RLOVZKN3prVm1lZzhMSjdHYmdzaUhXZFI0eFNvZTRDQVhSRDdCY2pnYnRyNjRia1hOZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWZyZWVic2QteDY0IjogWyJAcm9sbGRvd24vYmluZGluZy1mcmVlYnNkLXg2NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItei9vQnNSRW80NlNzRnFCd1l0RmUwa3BKZUJpakFUNDhPL1dYTEk0c3VpQ0xCa3IwM1JUdFRKTUN6U2REZDJ6bmxoOFZKaXpMMDlYVmtRZ2s4SVpvbnc9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmQDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItaWs4cTdHTTExenh2WXhGYzJQZURjVDZUQnZoQ1FNYVV4ZnBoL001bDlzS3VUcy9TamczTCtCeXcwRjd3MFpWTEJabXgzMFArZ0cwRUN6ek4rTUZjbVE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1nbnUiOiBbIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LWFybTY0LWdudUAxLjAuMSIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItUW9TeDJFa3lycmRaNmtjeUU4c3RxWjYydDBZcmE4RnM1aWE5bE94SnJoNlRNUUpLN2dRS21zY2RUSGY3cE9YS1JFS3JWd090SmNRRzNxVlNmYzg2NkE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsQDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi11d053RnB3S2VOaVphd2ZBV0JnZzBWSXp0UFRWM2loaGgxdlYzMzRoOWl2bk5Mb3J4blFNVTZGejh3RzFaYjRRaDlMQzEvTWtjeVQzWWxEWEczUnNnZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXBwYzY0LWdudSI6IFsiQHJvbGxkb3duL2JpbmRpbmctbGludXgtcHBjNjQtZ251QDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi16WTFidWw3T1dyN0RGQmlKKyt3b2ZYdm5yOEI0NWNlM1FzUVVoS3JJaFhzeWdBaDdiVGt3eWVNMWJpMWEyZzVDL3lDL044VFp5R0RFb01mbS9sOW1wZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXMzOTB4LWdudSI6IFsiQHJvbGxkb3duL2JpbmRpbmctbGludXgtczM5MHgtZ251QDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJzMzkweCIgfSwgInNoYTUxMi0wZnJsc1QvZjRGdDZJN1NNRVNUS25GM2Nac2RpY1FuMWRDTWtGL2pUOXdETEUrZ0dvaVFmdjFubVQ5ZStzN3MvZmVrdnZ5NnRaTTJqSHZJMnRrYkpEUT09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1nbnUiOiBbIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1nbnVAMS4wLjEiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1YQUJWbUdwOVRnMFdzcFRWdndkdVRjNGZwcXk2Sm5BVXJTUWU2T3V5cUQvMDNuSTdyME85T1dVa01Jd0ZyaktBSXFvbHZxb0E0WnJKcHBnd0UwR3htdz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1tdXNsIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC14NjQtbXVzbEAxLjAuMSIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLWJWNGZ6c3d1elZjS0Q5MG8vVk02UXFLeG54bERxMGcyQklTRExOVm14cm5ocHYxRERieVBoQ0lqWWZ2ellMVitNdmtLS25RdDJRNkFPODZTRUJVTFVRPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctb3Blbmhhcm1vbnktYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLW9wZW5oYXJtb255LWFybTY0QDEuMC4xIiwgIiIsIHsgIm9zIjogIm5vbmUiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLS9NaDBaaHEzT1A3ZlZzMGtjUUhaUDZsWkV0aE1HVGFTZjhVQlFZU0ZFWkRXR1hYbEVDK25KNkVxZW5hSzJ0NExCWE1lM0ErSy9HMkJWWFhkdE9yNFBRPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctd2FzbTMyLXdhc2kiOiBbIkByb2xsZG93bi9iaW5kaW5nLXdhc20zMi13YXNpQDEuMC4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvY29yZSI6ICIxLjEwLjAiLCAiQGVtbmFwaS9ydW50aW1lIjogIjEuMTAuMCIsICJAbmFwaS1ycy93YXNtLXJ1bnRpbWUiOiAiXjEuMS40IiB9LCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItKzF4YzlYNDVsOHVmc0JBbTZHanZ4MnFEUklZOWxUVnQwY2dXTmNKKzFnZGhYdmtieGVQQTYweVJUd1NUdVhMMDlDTWh5Sm1qcFY3RTNOb3l4YnFGUVE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjIjogWyJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjQDEuMC4xIiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi0xRCtVcVpkZm51UitKeTFHZ01Kd2k4NWJENDBIMjF1Tm1PUFJXUWh3NG9SU3VvbFovQjVyaXhaNDVESzJLWE9UQ3ZtVkNlY2F1V2dFaGJ3OGJJN3RPdz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLXdpbjMyLXg2NC1tc3ZjIjogWyJAcm9sbGRvd24vYmluZGluZy13aW4zMi14NjQtbXN2Y0AxLjAuMSIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLUlOQXljYVd1aGxPSzN3azRtUkhHc2Rnd1lXbWQ5Y0NoZFBkRTlid1dteTZybjlWcVZOWU5GR2hPZFhyb2ZYVXh3SEluY1NpUE5iOHRObThrbkRWSWVRPT0iXSwKCiAgICAiQHJvbGxkb3duL3BsdWdpbnV0aWxzIjogWyJAcm9sbGRvd24vcGx1Z2ludXRpbHNAMS4wLjEiLCAiIiwge30sICJzaGE1MTItMmo5Ykd0NUpoOGhqK3ZQdGd6UHRsNzJqMHlSeEhBeXVtb282VE5mQWpzTEIwNFV0cFN2UGJQY0RjQk14ejduKzlDWUIwYzFHeFFGeFlSZzJqaW1xR3c9PSJdLAoKICAgICJAc3RhbmRhcmQtc2NoZW1hL3NwZWMiOiBbIkBzdGFuZGFyZC1zY2hlbWEvc3BlY0AxLjEuMCIsICIiLCB7fSwgInNoYTUxMi1sMmFGeTVqQUxobmlHNUhncXJENmpYTGkvclVXckt2cU4vcUp4NnlvSnNnS2hibFZkK2lxcVU0UkNYYXZtL2pQaXR5RG81VEN2S01ucGpLbk9yaXkwdz09Il0sCgogICAgIkBzd2MvaGVscGVycyI6IFsiQHN3Yy9oZWxwZXJzQDAuNS4xNSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi44LjAiIH0gfSwgInNoYTUxMi1KUTVUdU1pNDVPd2k0L0JJTUFKQm9TUW9PSnUxMm9Pay9nQURxbGNVTDlKRWRIQjh2eWpVU3N4cWVOWG5tWEhqWUtNaTJXY1l0ZXpHRUVocVVJL0UyZz09Il0sCgogICAgIkB0YWJieV9haS9oaWpyaS1jb252ZXJ0ZXIiOiBbIkB0YWJieV9haS9oaWpyaS1jb252ZXJ0ZXJAMS4wLjUiLCAiIiwge30sICJzaGE1MTItcjViQ2xLcmNJdXNEb28wNDlkU0w4Q2F3bkhSNm1SZER3aGxRdUlnWlJOdHk2OHEweDhrM0xmMUJ0UEFNeFJmL0dnbkhCbklPNHVqZDMrR1FkTFd6eFE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvbm9kZSI6IFsiQHRhaWx3aW5kY3NzL25vZGVANC4zLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvcmVtYXBwaW5nIjogIl4yLjMuNSIsICJlbmhhbmNlZC1yZXNvbHZlIjogIl41LjIxLjAiLCAiaml0aSI6ICJeMi42LjEiLCAibGlnaHRuaW5nY3NzIjogIjEuMzIuMCIsICJtYWdpYy1zdHJpbmciOiAiXjAuMzAuMjEiLCAic291cmNlLW1hcC1qcyI6ICJeMS4yLjEiLCAidGFpbHdpbmRjc3MiOiAiNC4zLjAiIH0gfSwgInNoYTUxMi1hRmI0Z1VoRk9nZGg5QVhvNEl6QkVPekJra0F4bTlWaWd3REpuTUlZdjNsY2ZYQ0pWZXNOZmJFYUJsNEJOZ1ZSeWlkOTJBbWR2aXF3QlVCUktTZVkzZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZSI6IFsiQHRhaWx3aW5kY3NzL294aWRlQDQuMy4wIiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQHRhaWx3aW5kY3NzL294aWRlLWFuZHJvaWQtYXJtNjQiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtZGFyd2luLXg2NCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtZnJlZWJzZC14NjQiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybS1nbnVlYWJpaGYiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybTY0LWdudSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtbXVzbCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LWdudSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LW11c2wiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLXdhc20zMi13YXNpIjogIjQuMy4wIiwgIkB0YWlsd2luZGNzcy9veGlkZS13aW4zMi1hcm02NC1tc3ZjIjogIjQuMy4wIiwgIkB0YWlsd2luZGNzcy9veGlkZS13aW4zMi14NjQtbXN2YyI6ICI0LjMuMCIgfSB9LCAic2hhNTEyLUY3SFpHQmVOOUkwL0F1dUpTNVB3Y0Q4eGF5eDVyaTVHaGpZVURCRVZZVWtleHlBL2dpd2JETmpSVnJ4U2V6RTNUMjUwT1UySy93cC9sdFd4M1VPZWZnPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWFuZHJvaWQtYXJtNjQiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1hbmRyb2lkLWFybTY0QDQuMy4wIiwgIiIsIHsgIm9zIjogImFuZHJvaWQiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVRKUGlxNjd0S2xMdU9iUDZSa3d2VkdEb3hDTUJWdERnS2tMZmEvdXlqNy9GeXh2UXdIUytVT25WclhYZ2JFc2ZVYU1naVZ2QzRLYkpuUnIyNmhvNE5nPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NCI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NEA0LjMuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLW9NTi9XWlJiK1NPMzdCbVVFbEVnZUVXdVU4RS9IWFJraU9EeEp4TGUxVVRIVlhMcmRWU2dmYUpWN3BTbGhSR01TT2lYTHV4VElqZnNGM3dZdno4Y2dRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi14NjQiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1kYXJ3aW4teDY0QDQuMy4wIiwgIiIsIHsgIm9zIjogImRhcndpbiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLU42Q1VtdTRhNmJLVkFEZnc3N3AraXc2WWQ5UTNPQmhlMHZlYURYK1FhemZ1VllsUXNIZkRneEJyc2pRL0lXK3p5d0w4bVRyTmQwU2RKVC96Z3R2TWRBPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWZyZWVic2QteDY0IjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtZnJlZWJzZC14NjRANC4zLjAiLCAiIiwgeyAib3MiOiAiZnJlZWJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLXpETDVoQmtRZEg1QzZNcHFiSzNnUUFnUDgwdHNNd1NJMjZ2ak96akp0TkNNVW8wbEZnT0l0ekhLQkl1cE9aTlF4dDNvdVBIN1JQaHZOaGlUZkNlNUNRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybS1nbnVlYWJpaGYiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC1hcm0tZ251ZWFiaWhmQDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItUjA2SGROaTdBN09Fb01zZjZkNHRqWjcxUkNXblpRUEhqMm1ub3RTRlVSak5MZEJDK2NJZ1hRN2w4MUNxZW9pUWZ0amY2T09ibHhYTUluTWdOMlZ6TUE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtZ251IjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtZ251QDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1xVEpIRUxYOGpldGpoUlFIQ0xpbGtWTG15YnB6TlFBdGFJL2dhb1ZvaWRuL3VmYk5EYkFvOEtsSzJKK3lQb2M4d1F4dkR4Q21oLzVscjhuQzErbFRiZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC1hcm02NC1tdXNsIjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtbXVzbEA0LjMuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItWjZzdWtpUXNuZ25XTytsMzlYNHBQYmlXVDgxSUMrUExLRitQSHhJbHlaYkdOYjlNT0RmWWxYRVZsRnZlajVCT1pJbldYMDFrVnl6ZUx2SHNYaGZjelE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LWdudSI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LXg2NC1nbnVANC4zLjAiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1EUk5kUVJwU0d6UkdmQVJWdVZreHZNOFExMm5oMTlsNEJGL0c3ekdBMW9lKzl3Y0M2c2FGQkhUSVNycEljS3poaVh0U3JsU3JsdUNmdk11bGVkb0NUUT09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC14NjQtbXVzbCI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LXg2NC1tdXNsQDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItWjBJQURiRG84Ymg2STdoMklRTXg2MDFBZFhCTGZGcEVkVW90ZnQ4NmV2ZC84WlBmbFplOUNPUE84UTF2dytwZkxXSVVvOXpOL0pHWnZ3dUFKcWR1cWc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kiOiBbIkB0YWlsd2luZGNzcy9veGlkZS13YXNtMzItd2FzaUA0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAZW1uYXBpL2NvcmUiOiAiXjEuMTAuMCIsICJAZW1uYXBpL3J1bnRpbWUiOiAiXjEuMTAuMCIsICJAZW1uYXBpL3dhc2ktdGhyZWFkcyI6ICJeMS4yLjEiLCAiQG5hcGktcnMvd2FzbS1ydW50aW1lIjogIl4xLjEuNCIsICJAdHlieXMvd2FzbS11dGlsIjogIl4wLjEwLjEiLCAidHNsaWIiOiAiXjIuOC4xIiB9LCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItSE5aR09VeEVtRWxrc1lSN1M2c0M1alRlTkdwb2JBc3k5dTdHdTBBc2tKOC8yMEZSOUdxZWJVeUIrSEJjVS9heDZCSHVpdUppK09kYTRCK1lYNkgxeUE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2luMzItYXJtNjQtbXN2YyI6IFsiQHRhaWx3aW5kY3NzL294aWRlLXdpbjMyLWFybTY0LW1zdmNANC4zLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVBlK1JQVlRpMVQrcXltdXVScGNkdndTVlpqbmxsL2Y3bjhnQnhNTWgzeExUY3RNREtxcGRmR2ltYk15aW9xdExoVVlaeGRKOXdHTmhWN01LSHZnWnNRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLXdpbjMyLXg2NC1tc3ZjIjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtd2luMzIteDY0LW1zdmNANC4zLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1NdnJmMmtYVy95ZVcvT1RlelpsQ0dPaXJYUmNVdUxJQngvNVkxMkJhUE03d0pvcnlHNmRmUy9OSkw4YUJQcXRURXgvVm00VDR2S3pGVWNLRFQrVEtVQT09Il0sCgogICAgIkB0YWlsd2luZGNzcy9wb3N0Y3NzIjogWyJAdGFpbHdpbmRjc3MvcG9zdGNzc0A0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYWxsb2MvcXVpY2stbHJ1IjogIl41LjIuMCIsICJAdGFpbHdpbmRjc3Mvbm9kZSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUiOiAiNC4zLjAiLCAicG9zdGNzcyI6ICJeOC41LjEwIiwgInRhaWx3aW5kY3NzIjogIjQuMy4wIiB9IH0sICJzaGE1MTItSm0wNVRqeCs5eUNMR3Y1cXcxYys4NFBzZHM4TW55ckVRWUNCK0ZGazJsZ0dpVWpsUnFkeGtlNG1WVHVZcmoyeG5WWnFLaW0yQXByNXlTdVFSWUF3L3c9PSJdLAoKICAgICJAdHlieXMvd2FzbS11dGlsIjogWyJAdHlieXMvd2FzbS11dGlsQDAuMTAuMiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi40LjAiIH0gfSwgInNoYTUxMi1Sb0J2SjJYMHd1S2xXRklqcndmZkd3MUlxWkhLUXF6SWNoS2FhZFpaZm5OcHNBWXAybU0waDM2SnRQQ2pOREFIR2dZZXovMTV1TUJwZkd3Y2hoaU1nZz09Il0sCgogICAgIkB0eXBlcy9jaGFpIjogWyJAdHlwZXMvY2hhaUA1LjIuMyIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAdHlwZXMvZGVlcC1lcWwiOiAiKiIsICJhc3NlcnRpb24tZXJyb3IiOiAiXjIuMC4xIiB9IH0sICJzaGE1MTItTXc1NThvZUE5ZkZidjY1L3k0bUh0WERzOWJQbkZNWkFML2p4ZFBGVXBPSEhJWFg5MW1jZ0VIYlM1TGFocitwd1pGUjhBN0dRbGVSV2VJNmNHRkMyVUE9PSJdLAoKICAgICJAdHlwZXMvZGVlcC1lcWwiOiBbIkB0eXBlcy9kZWVwLWVxbEA0LjAuMiIsICIiLCB7fSwgInNoYTUxMi1jOWg5ZFZWTWlnTVBjNGJ3VHZDNWR4cXRxSlp3UVBlUHNXalBscFNPbm9qYm9yNnBHcWRrNTQxbGZBN0FxRlFyNXBCMUJSZHEwanVZOWRiODFCd3lGdz09Il0sCgogICAgIkB0eXBlcy9lc3RyZWUiOiBbIkB0eXBlcy9lc3RyZWVAMS4wLjkiLCAiIiwge30sICJzaGE1MTItR2hkUGd5MWVsNC9JbVAwNVgwNVV3NGN3Mi9NOTNCQ1VtbkV2V1pOU3RsQ3pFS01FNEZraytZcG9BNU9pSE5RbW9TN0NhZmI4WGEzUHlhOG0xUXJ6ZWc9PSJdLAoKICAgICJAdHlwZXMvbm9kZSI6IFsiQHR5cGVzL25vZGVAMjIuMTkuMTkiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidW5kaWNpLXR5cGVzIjogIn42LjIxLjAiIH0gfSwgInNoYTUxMi1keWgveE8yRmg1YllyZldhYXFHclJRUUdrTmRtWXc2QW1hQVV2WWVVTU5UV1F0dmI3OTZpa0xkbVRjaFJtT2xPaUlKMVREWGZXZ1Z4MVFrVWxRNkhldz09Il0sCgogICAgIkB0eXBlcy9yZWFjdCI6IFsiQHR5cGVzL3JlYWN0QDE5LjIuMTUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiY3NzdHlwZSI6ICJeMy4yLjIiIH0gfSwgInNoYTUxMi1lUndjR05IdmUrRThxdEVRU1NSbDZ1cmgrckZvcDR2OGdtNk84ckd2MjVDb2RidkZkTGpBMXZWUTFLa2lGRTB3MFVQT25iOHREaUZLTDVscDBydFk1UT09Il0sCgogICAgIkB0eXBlcy9yZWFjdC1kb20iOiBbIkB0eXBlcy9yZWFjdC1kb21AMTkuMi4zIiwgIiIsIHsgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJAdHlwZXMvcmVhY3QiOiAiXjE5LjIuMCIgfSB9LCAic2hhNTEyLWpwMkwvZVk2Zm4rS2dWVlFBT3FZSXRiRjBWWS9ZQXBlNU16MkYwYXlrU084Z3gzMWJZQ1p5dlNlWXhDSEt2ekhHNWVaamMrenlhUzVCckJXeWEyK2tRPT0iXSwKCiAgICAiQHZpdGVzdC9leHBlY3QiOiBbIkB2aXRlc3QvZXhwZWN0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBzdGFuZGFyZC1zY2hlbWEvc3BlYyI6ICJeMS4xLjAiLCAiQHR5cGVzL2NoYWkiOiAiXjUuMi4yIiwgIkB2aXRlc3Qvc3B5IjogIjQuMS42IiwgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAiY2hhaSI6ICJeNi4yLjIiLCAidGlueXJhaW5ib3ciOiAiXjMuMS4wIiB9IH0sICJzaGE1MTItN0VIRHF1UHRoQUxTVjBqaGhqZ0VXOEZYYXZpTXg3clNxdThXNm9xQ29BdU9oS292ODE0UDk5UURWMXB4TUEzUVB2MjFZdWR2Sm5nSWhqck5JNG9wTGc9PSJdLAoKICAgICJAdml0ZXN0L21vY2tlciI6IFsiQHZpdGVzdC9tb2NrZXJANC4xLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHZpdGVzdC9zcHkiOiAiNC4xLjYiLCAiZXN0cmVlLXdhbGtlciI6ICJeMy4wLjMiLCAibWFnaWMtc3RyaW5nIjogIl4wLjMwLjIxIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIm1zdyI6ICJeMi40LjkiLCAidml0ZSI6ICJeNi4wLjAgfHwgXjcuMC4wIHx8IF44LjAuMCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIm1zdyIsICJ2aXRlIl0gfSwgInNoYTUxMi1NQ0ZjNjNjek1qRUluT2xjWTJjcFFDdkNOK0tnYkFuKzYweHU5Y01nUDRzS2FMQzVKTkFLdzdKSDhRZEFub0FDODhoVzFJaVNOWitHZ1ZYbE4xVWNNUT09Il0sCgogICAgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6IFsiQHZpdGVzdC9wcmV0dHktZm9ybWF0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRpbnlyYWluYm93IjogIl4zLjEuMCIgfSB9LCAic2hhNTEyLWg1U3hEL0l6TmhaWW5yU1pSc1VaUUlDK3ZEMEdZOGNVdnEwaXdzbWtGS2l4UkNLTExXcUNYYS9GSVE0UzFSK3NJK1BHb29qa0hzZE5yYlppTTlRcGd3PT0iXSwKCiAgICAiQHZpdGVzdC9ydW5uZXIiOiBbIkB2aXRlc3QvcnVubmVyQDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAicGF0aGUiOiAiXjIuMC4zIiB9IH0sICJzaGE1MTItbk9QQ21uMit5RDBaTm1LZHNYR3YvVXhNTVdiTXVLZUQ2R3lZbmNOd2RrWUR4cFF2clBTS1lqMnJXdURqQzJZNGI2dzZoamlwNWRCS0Z6RVV1WmUzdkE9PSJdLAoKICAgICJAdml0ZXN0L3NuYXBzaG90IjogWyJAdml0ZXN0L3NuYXBzaG90QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6ICI0LjEuNiIsICJAdml0ZXN0L3V0aWxzIjogIjQuMS42IiwgIm1hZ2ljLXN0cmluZyI6ICJeMC4zMC4yMSIsICJwYXRoZSI6ICJeMi4wLjMiIH0gfSwgInNoYTUxMi1ZaHNkRTZ4QVZmVERtemp4TDJaRFV2amorWnNneU9LZStUZFF6cWtENzJ3SU9tSGthOE51R1E2TnBUTlp2OUQyWjYzZmJ3V0tKUGVWcEV3NEVRZ1l4dz09Il0sCgogICAgIkB2aXRlc3Qvc3B5IjogWyJAdml0ZXN0L3NweUA0LjEuNiIsICIiLCB7fSwgInNoYTUxMi1KRkt4TXg2dWRod0toL0xkbzI3MGUxN1FYNzEwdmd1bk1rdVBBdlhqSFN2QzZvcUxXQUhoVmhqZy9JNzFxMHUwQ0JTRXJJT0RWMUtqdjBGUU5TV2pkZz09Il0sCgogICAgIkB2aXRlc3QvdXRpbHMiOiBbIkB2aXRlc3QvdXRpbHNANC4xLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHZpdGVzdC9wcmV0dHktZm9ybWF0IjogIjQuMS42IiwgImNvbnZlcnQtc291cmNlLW1hcCI6ICJeMi4wLjAiLCAidGlueXJhaW5ib3ciOiAiXjMuMS4wIiB9IH0sICJzaGE1MTItRnhJWStVODFSM0xHS0N4YUhIRlJRNStnNi9pUmdHTG1lSFdkcDJBbWo0bGpRUnJFSVdIbVp5RGZEWUJSWmxweXFBN3FLeHRTOUREMWRoazhSblJJVlE9PSJdLAoKICAgICJhY29ybiI6IFsiYWNvcm5AOC4xNi4wIiwgIiIsIHsgImJpbiI6IHsgImFjb3JuIjogImJpbi9hY29ybiIgfSB9LCAic2hhNTEyLVVWSnlFOU10dE9zQlFJREt3MXNrYjluQXdRdVI1d3VHRDMrODJLNkpnSmxtL1krS0k5Mm9Oc01OR1pDWWREc1Z0UkhTYWswcGNWNURubzUrNGpoOXN3PT0iXSwKCiAgICAiYW5zaS1yZWdleCI6IFsiYW5zaS1yZWdleEA1LjAuMSIsICIiLCB7fSwgInNoYTUxMi1xdUpRWGxUU1VHTDJMSDlTVVhvOFZ3c1k0c29hbmhnbzZMTlNtODRFMUxCY0U4czNPMHdwZGlSenlSOXovWlpKTWxNV3YzN3FPT2I5cGRKbE1VRUtGUT09Il0sCgogICAgImFuc2ktc3R5bGVzIjogWyJhbnNpLXN0eWxlc0A0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjb2xvci1jb252ZXJ0IjogIl4yLjAuMSIgfSB9LCAic2hhNTEyLXpiQjlyQ0pBVDFyYmppVkRiMmhxS0ZITllMeGd0azhOVVJ4WjNJWndEM0Y2TnR4YlhaUUNublNpMUxreCtJRG9oZFBsRnAyMjJ3VkFMSWhlWkpRU0VnPT0iXSwKCiAgICAiYXNzZXJ0aW9uLWVycm9yIjogWyJhc3NlcnRpb24tZXJyb3JAMi4wLjEiLCAiIiwge30sICJzaGE1MTItSXppOFJRY2ZmcUNlTlZnRmlnS2xpMXNza2xJYnBIbkNZYzZBa25YR1lvQjZnckpxeWVieTdqdjEySlVRZ21UQW5JRG5iY2sxdXhrc1Q0ZHpOM1BXQkE9PSJdLAoKICAgICJiYXNlbGluZS1icm93c2VyLW1hcHBpbmciOiBbImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZ0AyLjEwLjMxIiwgIiIsIHsgImJpbiI6IHsgImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZyI6ICJkaXN0L2NsaS5janMiIH0gfSwgInNoYTUxMi1NdWpZTzNlUDcydXZtU0UwaTR3bHRzb2RSZklwWkFUUDNqdnpSTlJHR3hneklkN2FWb2NWSkpWM25mMDFxbnp6S0ZHeFFWQzlicFd4bDVjanhUci83UT09Il0sCgogICAgImJ1ZmZlci1mcm9tIjogWyJidWZmZXItZnJvbUAxLjEuMiIsICIiLCB7fSwgInNoYTUxMi1FK1hRQ1J3U2JhYWlDaHR2Nms2RHdnYytieCtCczZ2dUtKSEhsNWtveC9CYUtiaGlYenFRT3dLNGNPMjJ5RWxHcDJPQ21qd1ZoVDNIbXhneVBHbkpmUT09Il0sCgogICAgImNhbml1c2UtbGl0ZSI6IFsiY2FuaXVzZS1saXRlQDEuMC4zMDAwMTc5MyIsICIiLCB7fSwgInNoYTUxMi1pd1NzWVdhQ09vaDI2Y1Y4TndOUlZpSGxyZlV2WXNIRGZSVmNidG13MEtnNlBKSVpaWHdNa2oxNDQyRllMQkdrZVVmMWp1QXNVM0RUZnhXNTc5bXJQQT09Il0sCgogICAgImNoYWkiOiBbImNoYWlANi4yLjIiLCAiIiwge30sICJzaGE1MTItTlVQUmx1T2ZPaVRLQkt2V1B0U0Q0UGhGdldDcU9pMEJHU3ROV3M1N1g5anM3WEdUcHJTbUZvejVGMHRXaFI0V1BqTmVSOWpYcWRDNy9VcFNKVG5sUmc9PSJdLAoKICAgICJjaGFsayI6IFsiY2hhbGtANC4xLjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiYW5zaS1zdHlsZXMiOiAiXjQuMS4wIiwgInN1cHBvcnRzLWNvbG9yIjogIl43LjEuMCIgfSB9LCAic2hhNTEyLW9LbmJoRnlSSVhwVXVlejhpQk1teUVhNG5iajRJT1F5dWhjL3d5OWtZNy9XVlBjd0lPOVZBNjY4UHU4UmtPNyswRzc2U0xST2V5dzlDcFEwNjFpNG1BPT0iXSwKCiAgICAiY2xpZW50LW9ubHkiOiBbImNsaWVudC1vbmx5QDAuMC4xIiwgIiIsIHt9LCAic2hhNTEyLUlWM091MGpTTXpacmQzcFo0OG5Ma1Q5REE3QWcxcG5QemFpUWhwVzdjM1JiY3FxenZ6elZ1K0w4Z2ZxTXAvOElNMk1RdFNpcWFDeHJyY2Z1OEk4ck1BPT0iXSwKCiAgICAiY2xpdWkiOiBbImNsaXVpQDguMC4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInN0cmluZy13aWR0aCI6ICJeNC4yLjAiLCAic3RyaXAtYW5zaSI6ICJeNi4wLjEiLCAid3JhcC1hbnNpIjogIl43LjAuMCIgfSB9LCAic2hhNTEyLUJTZU5ueXVzNzVDNC8vTlE5Z1F0MS9jc1RYeW8vOFNiK2FmTEFrekFwdEZ1TXNvZDlIRm9rR051ZFpwaS9vUVY3M2huVksrc1IrNVBWUk1kK0RyN1lRPT0iXSwKCiAgICAiY2xzeCI6IFsiY2xzeEAyLjEuMSIsICIiLCB7fSwgInNoYTUxMi1lWW0wUVdCdFVyQldaV0cwZDM4Nk9HQXcxNlo5OTVQaU9WbzJCN2JqV1NiSGVkR2w1ZTBaV2FxNjVrT0dnVVNOZXNFSURrQjlJU2JUZy9KSzlkaENaQT09Il0sCgogICAgImNvbG9yLWNvbnZlcnQiOiBbImNvbG9yLWNvbnZlcnRAMi4wLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiY29sb3ItbmFtZSI6ICJ+MS4xLjQiIH0gfSwgInNoYTUxMi1SUkVDUHNqN2l1L3hiNW9LWWNzRkhTcHBGTm5zai81Mk9WVFJLYjR6UDVvblh3VkYzelZtbVRvTmNPZkdDK0NSRHBmSy9VNTg0Zk1nMzhaSENhRWxLUT09Il0sCgogICAgImNvbG9yLW5hbWUiOiBbImNvbG9yLW5hbWVAMS4xLjQiLCAiIiwge30sICJzaGE1MTItZE95KzNBdVczYTJ3TmJaSEl1TVpwVGNnakd1TFUvdUJML3ViY1pGOU9YYkRvOGZmNE84eVZwNUJmMGVmUzh1RW9ZbzVxNEZ4N2RZOU9nUUdYZ0FzUUE9PSJdLAoKICAgICJjb21tYW5kZXIiOiBbImNvbW1hbmRlckAyLjIwLjMiLCAiIiwge30sICJzaGE1MTItR3BWa21NOHZGMnZRVWtqMkx2Wm1EMzVKeGVKT0xDd0o5Y1VrdWd5azJudWhidjMrbUp2cExZWXQrMCtVU014RStvaitleS9sSkVuaFp3NzV4L09NY1E9PSJdLAoKICAgICJjb25jdXJyZW50bHkiOiBbImNvbmN1cnJlbnRseUA5LjIuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjaGFsayI6ICI0LjEuMiIsICJyeGpzIjogIjcuOC4yIiwgInNoZWxsLXF1b3RlIjogIjEuOC4zIiwgInN1cHBvcnRzLWNvbG9yIjogIjguMS4xIiwgInRyZWUta2lsbCI6ICIxLjIuMiIsICJ5YXJncyI6ICIxNy43LjIiIH0sICJiaW4iOiB7ICJjb25jIjogImRpc3QvYmluL2NvbmN1cnJlbnRseS5qcyIsICJjb25jdXJyZW50bHkiOiAiZGlzdC9iaW4vY29uY3VycmVudGx5LmpzIiB9IH0sICJzaGE1MTItZnNmck8wTXhWNjRabm95OC9sMXZWSWpqSGEyOVNaeXlxUGdRQndoaURjYVc4d0pjMlczWFdWT0d4NE0zb0pCbnYvemRVWklJcDFnRGVTOThHelA4Tmc9PSJdLAoKICAgICJjb252ZXJ0LXNvdXJjZS1tYXAiOiBbImNvbnZlcnQtc291cmNlLW1hcEAyLjAuMCIsICIiLCB7fSwgInNoYTUxMi1LdnA0NTlIclYyRkVKMUNBc2kxS3UrTVkza2FzSDE5VEZ5a1R6MnhXbU1lcTZiazJOVTNYWHZmSitRNjFtMHhrdFd3dCsxSFNZZjNKWnNUbXMzYVJKZz09Il0sCgogICAgImNzc3R5cGUiOiBbImNzc3R5cGVAMy4yLjMiLCAiIiwge30sICJzaGE1MTItejFIR0tjWXkyeEE4QUdRZndybjBQQXkrUEI3WC9HU2ozVVZKVzlxS3luNDN4V2ErZ2w1blhtVTRxcUxNUnpXVkxGQzhLdXNVWDhULzBrQ2lPWXBBSVE9PSJdLAoKICAgICJkYXRlLWZucyI6IFsiZGF0ZS1mbnNANC4yLjEiLCAiIiwge30sICJzaGE1MTItMzdSaFNkeGFHMXN1ZW42VkRDemE2ck5yUWZvb3lRaDU3SEZWUHdRR0VxMlFXbGlWTHpQUVo4T2EwMTd3ZU91K0haQ256STdOM1BmL3d5b0JLZkVxckE9PSJdLAoKICAgICJkYXRlLWZucy1qYWxhbGkiOiBbImRhdGUtZm5zLWphbGFsaUA0LjEuMC0wIiwgIiIsIHt9LCAic2hhNTEyLWhUSVAveit0K3FLd0JEY21tc25taldUZHV4Q2crNUtmZHFXUXZiMlgvOEM5K2tuWVk2ZXBOL3BmeGREdXlWbFNWZUZ6MHNNNWVFZndJVVE3MFU0Y2tnPT0iXSwKCiAgICAiZGV0ZWN0LWxpYmMiOiBbImRldGVjdC1saWJjQDIuMS4yIiwgIiIsIHt9LCAic2hhNTEyLUJ0ajJCT09PODNvM1d5SDU5ZThNZ1hzeEVRVmNhcmtVT3BFWXJ1YkIwdXJ3bk4xMHlRMzY0cnNpQnlVMTFuWmxxV1labTA1aS9vZjdpbzRtemloQnRRPT0iXSwKCiAgICAiZW1vamktcmVnZXgiOiBbImVtb2ppLXJlZ2V4QDguMC4wIiwgIiIsIHt9LCAic2hhNTEyLU1Tall6Y1dOT0EwZXdBSHB6ME14cFlGdndnNnlqeTFORzN4dGVvcXo2NDRWQ28vUlBnbnIxL0dHdCtpYzNpSlR6UThFdTNUZE0xNFNhd25WVW1HRTZBPT0iXSwKCiAgICAiZW5oYW5jZWQtcmVzb2x2ZSI6IFsiZW5oYW5jZWQtcmVzb2x2ZUA1LjIxLjUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZ3JhY2VmdWwtZnMiOiAiXjQuMi40IiwgInRhcGFibGUiOiAiXjIuMy4zIiB9IH0sICJzaGE1MTItbUxDTmJyUWxpMTFLMXlTVW11TnQ0WlVCM09wR0lEcTRxMnZUQlRmNWNMMmxwc1JqSTlRS3FTRDBuZGpXOEZ5dmNXL0pqNDZnTWU5c3l5SEFzdk1hL0E9PSJdLAoKICAgICJlcy1tb2R1bGUtbGV4ZXIiOiBbImVzLW1vZHVsZS1sZXhlckAyLjEuMCIsICIiLCB7fSwgInNoYTUxMi1uMjd6VFlNall1MWFqNE1qQ1d6U1A3RzlyNzV1dHNhb2M4bTYxd2VLK1c4Sk1CR0dReWJkNDNHc3RDWFozV05tU0Z0R1Q5d2k1OXFRVFc2bWhUUjVMUT09Il0sCgogICAgImVzYnVpbGQiOiBbImVzYnVpbGRAMC4yNS40IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGVzYnVpbGQvYWl4LXBwYzY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9hbmRyb2lkLWFybSI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvYW5kcm9pZC1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvYW5kcm9pZC14NjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2Rhcndpbi1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZGFyd2luLXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZnJlZWJzZC1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZnJlZWJzZC14NjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWFybSI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtYXJtNjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWlhMzIiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWxvb25nNjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LW1pcHM2NGVsIjogIjAuMjUuNCIsICJAZXNidWlsZC9saW51eC1wcGM2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtcmlzY3Y2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtczM5MHgiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbmV0YnNkLWFybTY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9uZXRic2QteDY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9vcGVuYnNkLWFybTY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9vcGVuYnNkLXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvc3Vub3MteDY0IjogIjAuMjUuNCIsICJAZXNidWlsZC93aW4zMi1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvd2luMzItaWEzMiI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvd2luMzIteDY0IjogIjAuMjUuNCIgfSwgImJpbiI6IHsgImVzYnVpbGQiOiAiYmluL2VzYnVpbGQiIH0gfSwgInNoYTUxMi04cGdqTFVjVWpjZ0RnKzJRNE5ZWG5QYm8vdm5jQVk0VW15YUNtMGpaZXZFUnFDSFpJYVd3ZEpIa2Y4WFF0dTRBeFNLQ2R2clViVDBYVXIxSWRaekk4UT09Il0sCgogICAgImVzY2FsYWRlIjogWyJlc2NhbGFkZUAzLjIuMCIsICIiLCB7fSwgInNoYTUxMi1XVWoycWx4YVF0TzRnNlBxNWMyOUdUY1dHRHlkOGl0TDh6VGxpcGdFQ3ozSmVzQWlpT0tvdGQ4SlU2b3RCM1BBQ2dHNnhrSlV5Vmhib01TK2JqZS9qQT09Il0sCgogICAgImVzdHJlZS13YWxrZXIiOiBbImVzdHJlZS13YWxrZXJAMy4wLjMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL2VzdHJlZSI6ICJeMS4wLjAiIH0gfSwgInNoYTUxMi03UlVLZlhnU01Na3p0Nlp1WG1xYXBPdXJMR1BQZmdqNmw5dVJaN2xSR29sdmsweTJ5b2NjMzVMZGN4S0M1UFFaZG4yRE1xaW9BUTJOb1djclRLbW02Zz09Il0sCgogICAgImV4cGVjdC10eXBlIjogWyJleHBlY3QtdHlwZUAxLjMuMCIsICIiLCB7fSwgInNoYTUxMi1rbnZ5ZWF1WWhxak9ZdlE2Nk16blNNczgzd21IckN5Y05FTjZBbysyQWVZRWZ4VUlrdWlWeGRFYTFxbEdFUEsrV2UzbjBUSGlEY2lZU3NDY2dXL0RvQT09Il0sCgogICAgImZkaXIiOiBbImZkaXJANi41LjAiLCAiIiwgeyAicGVlckRlcGVuZGVuY2llcyI6IHsgInBpY29tYXRjaCI6ICJeMyB8fCBeNCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbInBpY29tYXRjaCJdIH0sICJzaGE1MTItdEliWXRaYnVjT3MwQlJHcVBKa3NoSlVZZEwrU0RIN2RWTThnankrRVJwM1dBVWpMRUZKRSswMmthbnlIdHdqV09ud3JLWUJpd0FtTTBwNGtMSkFuWGc9PSJdLAoKICAgICJmc2V2ZW50cyI6IFsiZnNldmVudHNAMi4zLjMiLCAiIiwgeyAib3MiOiAiZGFyd2luIiB9LCAic2hhNTEyLTV4b0RmWCtmTDdmYUFUbmFnbVdQcGJGdHdoL1I3N1dtTU1xcUhHUzY1QzN2dkIwWUhyZ0YrQjFZbVozNDQxdE1qNW42M2swMjEyWE5vSnd6bGhmZlF3PT0iXSwKCiAgICAiZ2V0LWNhbGxlci1maWxlIjogWyJnZXQtY2FsbGVyLWZpbGVAMi4wLjUiLCAiIiwge30sICJzaGE1MTItRHlGUDNCTS8zWUhUUU9DVUwvdzBPWkhSMGxwS2VHcnhvdGNIV2NxTkVkbmx0cUZ3WFZmaEVCUTk0ZUlvMzRBZlFwbzByR2tpNGN5SWlmdFkwNmgyRmc9PSJdLAoKICAgICJncmFjZWZ1bC1mcyI6IFsiZ3JhY2VmdWwtZnNANC4yLjExIiwgIiIsIHt9LCAic2hhNTEyLVJiSjUvam1GY05OQ2NEVjVvOWVUbkJMSi9Ic3pXVjBQNzNiYytGZjRuUy9ySmorWWFTNklHeWlPTDBWb0JZWCtsMVdybDNrNjNoL0tySCtuaEowWHZRPT0iXSwKCiAgICAiaGFzLWZsYWciOiBbImhhcy1mbGFnQDQuMC4wIiwgIiIsIHt9LCAic2hhNTEyLUV5a0pUL1ExS2pUV2N0cHBnSUFnZlNPMHRLVnVaVWpoZ01yMTdrcVR1bU1sNkFmdjNFSVNsZVU3cVpVem9YREZUQUhUREM0Tk9vRy9aeFUzRXZsTVBRPT0iXSwKCiAgICAiaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQiOiBbImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50QDMuMC4wIiwgIiIsIHt9LCAic2hhNTEyLXp5bW01K3Urc0NzU1d5RDlxTmFlalYzREZ2aENLY2xLZGl6WWFKVXVIQTgzUkxqYjduU3VHbmRkQ0hHdjBoaytLWTdCTUFsc1dlSzRVZWc2RVY2WFFnPT0iXSwKCiAgICAiaml0aSI6IFsiaml0aUAyLjcuMCIsICIiLCB7ICJiaW4iOiB7ICJqaXRpIjogImxpYi9qaXRpLWNsaS5tanMiIH0gfSwgInNoYTUxMi1BQy83Sm9mSnZaR3JybmVXTmFFbkplT0xVeCtKbEd0N3ROYTB3WmlSUFQ0TVkxd21mS2p0Mis2TzJwMnV6Mitza2xsOE9aWm1KTU5xZWtlN2tLYk5nUT09Il0sCgogICAgImxpYnBob25lbnVtYmVyLWpzIjogWyJsaWJwaG9uZW51bWJlci1qc0AxLjEyLjQxIiwgIiIsIHt9LCAic2hhNTEyLWxzbU1tR1hCeFhJSy9WTUxFajBrTDZNdFVzMWtCR2oxblRDemk2emdRb0cxREV3cXd0MkRReUh4Y0x5a2NlSXhBbmZFM2h5YTdOdUloNlBwQzZTM2ZBPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzIjogWyJsaWdodG5pbmdjc3NAMS4zMi4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImRldGVjdC1saWJjIjogIl4yLjAuMyIgfSwgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAibGlnaHRuaW5nY3NzLWFuZHJvaWQtYXJtNjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1kYXJ3aW4tYXJtNjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1kYXJ3aW4teDY0IjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtZnJlZWJzZC14NjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1saW51eC1hcm0tZ251ZWFiaWhmIjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251IjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtbXVzbCI6ICIxLjMyLjAiLCAibGlnaHRuaW5nY3NzLWxpbnV4LXg2NC1nbnUiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtbXVzbCI6ICIxLjMyLjAiLCAibGlnaHRuaW5nY3NzLXdpbjMyLWFybTY0LW1zdmMiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy13aW4zMi14NjQtbXN2YyI6ICIxLjMyLjAiIH0gfSwgInNoYTUxMi1OWFlCemluTnJibGZyYVBHeXJiUG9EMTlDMWg5bGZJLzFtemdXWXZYVVRlNDE0R3ovWDFGRDJYQlpTWk03clJUck1BOEpMM090QWFHaWZySUtoUTV5UT09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1hbmRyb2lkLWFybTY0IjogWyJsaWdodG5pbmdjc3MtYW5kcm9pZC1hcm02NEAxLjMyLjAiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItWUs3L0NsVHQ0a0FLMHZvNnczWCtQbm0wRDJjZjJ2UEhiaE9YZG9OdGkxR2EwYWwxUDRUQlpod2pBVHZqTndMRUJDbkt2akpjMmpRZ0hYSDBORXdsQWc9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtZGFyd2luLWFybTY0IjogWyJsaWdodG5pbmdjc3MtZGFyd2luLWFybTY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVJ6ZUc5SnU1YmFnMkJ2MS9sd2xWSnZCRTNxNlR0WHNrZFpMTEN5Zmc1cHQrSEx6OUJxbElDTzdMWk03VkhOVFRuLzVQUmhIRkJTams1bGM0Y21zY1BRPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzLWRhcndpbi14NjQiOiBbImxpZ2h0bmluZ2Nzcy1kYXJ3aW4teDY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1VK1FzQnAybS9zMndxcFVZVC82d25sYWdkWmJ0WmRuZFNtdXQvTkpxbENjTUxUV3A1bXVDcklEK0s1VUo2anFEMkJGc2hlakNZWG5pUERiTmg3M1Y4dz09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1mcmVlYnNkLXg2NCI6IFsibGlnaHRuaW5nY3NzLWZyZWVic2QteDY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSkNUaWdlZEVrc1prM3RIVFR0aG5NZFZmR2Y2MUZreThKaTJFNFlqVVRFUVgxNHhpeS9sVHpYbnUxdndpWmUzYlllMHErU3BzU0gvQ1RlRFhLNldIaWc9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtLWdudWVhYmloZiI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LWFybS1nbnVlYWJpaGZAMS4zMi4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTIteDZybm5wUmEyR0wwelFPa3Q2cnRzM1lEUHpkdUxwV3Z3QUY2RU1oWEZWWlhENHRQckJrRUZxekdvd3pDc0lXc1BqcVNLK3R5TkVPRFVCWGVlVkhTa3c9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251IjogWyJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItMG5uTXlveU9MUkpYZmJNT2lsYVNSY0xIM0p3NXo5SEROR2ZUL2d3Q1BnYURqbngwaTh3N3ZCekZMRlIxZjZDTUxLRjhnVmJlYm1rVU4zZmEva1FKcFE9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtbXVzbCI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LWFybTY0LW11c2xAMS4zMi4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1VcFFrb2VucjRVSkV6Z1ZJWXBJODBsREZ2Um1QVmc2b3Fib05IZm9INENRSWZOQStIT3JaN01vN0taUDAyZEM2TGpnaFBRSmVCc3ZYaEpvZC93bklCZz09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtZ251IjogWyJsaWdodG5pbmdjc3MtbGludXgteDY0LWdudUAxLjMyLjAiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1WN1FyNTJJaFptZEtQVnIrVnR3OG8rV0xzUUpZQ1RkOGxvSWZwRGFNUldHVVpmQk9ZRUpleUpJa3FHSURNWlB3UHgyNHBVTWZ3U3h4SThwaHIvTWJPQT09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtbXVzbCI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LXg2NC1tdXNsQDEuMzIuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLWJZY0xwK1ZiMGF3c2lYZy84MHVDUmV6Q1lITmcxL2wzbXQwZ3pIbldWOVhQMVc1c0thNS9UQ2RHV2FSL3pCTTJQZUYvSGJzUXYvajJVUk5PaVZ1eFdnPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzLXdpbjMyLWFybTY0LW1zdmMiOiBbImxpZ2h0bmluZ2Nzcy13aW4zMi1hcm02NC1tc3ZjQDEuMzIuMCIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItOFNiQzhCUjQwcFM2YmFDTThzYnRZRFN3RVZRZDRKbEZUT2xhRDNnV0dIZlRoVGNBQm5OREJkYTZlVFplcWJvZmFsSUpoRngwcUt6Z0hKbWNQVG5HZHc9PSJdLAoKICAgICJsaWdodG5pbmdjc3Mtd2luMzIteDY0LW1zdmMiOiBbImxpZ2h0bmluZ2Nzcy13aW4zMi14NjQtbXN2Y0AxLjMyLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1BbXE5Qi9Tb1pZZERpMWtGcm9qbm9xUEx4WWhRNFdvNVhpTDhFVkpyVnNCOEFSb0MxUFdXNlZHdFQwV0tDZW1qeThhQytsb3VKbmpTN1UxOHgzYjA2UT09Il0sCgogICAgIm1hZ2ljLXN0cmluZyI6IFsibWFnaWMtc3RyaW5nQDAuMzAuMjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjIjogIl4xLjUuNSIgfSB9LCAic2hhNTEyLXZkMkY0WVV5RVhLR2NMSG9xK1RFeUNqeHVlU2VIbkZ4eXlqTnA4MHlnMFhWNHZVaG5EZXIvbHZ2bHFNL2FyQjViWFFONUsyLzNvaW55Q1J5eDhUMkNRPT0iXSwKCiAgICAibmFub2lkIjogWyJuYW5vaWRAMy4zLjEyIiwgIiIsIHsgImJpbiI6IHsgIm5hbm9pZCI6ICJiaW4vbmFub2lkLmNqcyIgfSB9LCAic2hhNTEyLVpCOVJILzM5cXBxNVZ1NlkrTm1VYUZoUVI2cHArTTJYdDc2WEJuRXdEYUdjVkFxaGx2eHJsM0IyYktTNUQzTkgzUVI3NnYzYVNyS2FGL0tpeTdsRXRRPT0iXSwKCiAgICAibmV4dCI6IFsibmV4dEAxNi4yLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQG5leHQvZW52IjogIjE2LjIuNiIsICJAc3djL2hlbHBlcnMiOiAiMC41LjE1IiwgImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZyI6ICJeMi45LjE5IiwgImNhbml1c2UtbGl0ZSI6ICJeMS4wLjMwMDAxNTc5IiwgInBvc3Rjc3MiOiAiOC40LjMxIiwgInN0eWxlZC1qc3giOiAiNS4xLjYiIH0sICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBuZXh0L3N3Yy1kYXJ3aW4tYXJtNjQiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy1kYXJ3aW4teDY0IjogIjE2LjIuNiIsICJAbmV4dC9zd2MtbGludXgtYXJtNjQtZ251IjogIjE2LjIuNiIsICJAbmV4dC9zd2MtbGludXgtYXJtNjQtbXVzbCI6ICIxNi4yLjYiLCAiQG5leHQvc3djLWxpbnV4LXg2NC1nbnUiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy1saW51eC14NjQtbXVzbCI6ICIxNi4yLjYiLCAiQG5leHQvc3djLXdpbjMyLWFybTY0LW1zdmMiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy13aW4zMi14NjQtbXN2YyI6ICIxNi4yLjYiLCAic2hhcnAiOiAiXjAuMzQuNSIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJAb3BlbnRlbGVtZXRyeS9hcGkiOiAiXjEuMS4wIiwgIkBwbGF5d3JpZ2h0L3Rlc3QiOiAiXjEuNTEuMSIsICJiYWJlbC1wbHVnaW4tcmVhY3QtY29tcGlsZXIiOiAiKiIsICJyZWFjdCI6ICJeMTguMi4wIHx8IDE5LjAuMC1yYy1kZTY4ZDJmNC0yMDI0MTIwNCB8fCBeMTkuMC4wIiwgInJlYWN0LWRvbSI6ICJeMTguMi4wIHx8IDE5LjAuMC1yYy1kZTY4ZDJmNC0yMDI0MTIwNCB8fCBeMTkuMC4wIiwgInNhc3MiOiAiXjEuMy4wIiB9LCAib3B0aW9uYWxQZWVycyI6IFsiQG9wZW50ZWxlbWV0cnkvYXBpIiwgIkBwbGF5d3JpZ2h0L3Rlc3QiLCAiYmFiZWwtcGx1Z2luLXJlYWN0LWNvbXBpbGVyIiwgInNhc3MiXSwgImJpbiI6IHsgIm5leHQiOiAiZGlzdC9iaW4vbmV4dCIgfSB9LCAic2hhNTEyLXFPVmdLSmcxK0F0MTVOcGVVUCtlSmdDSHZUQ2dYc29nd2VxODdSaS9JeDdQa3FRSGc0c2RhWG1TRnFLbGdhSVhFNGtXMGcyNUxFNjhXODdVQU5sSHR3PT0iXSwKCiAgICAib2J1ZyI6IFsib2J1Z0AyLjEuMSIsICIiLCB7fSwgInNoYTUxMi11VHFGOU11UHJhQVErSXNuUGYzNjZSRzRjUDlSdFVpN01MTzFOM0tFYyt3YjBhNnlLcGVMMGxtazJJQjFqWTVLSFBBbFRjNlQvSlJkQy9ZcXhITndrUT09Il0sCgogICAgInBhdGhlIjogWyJwYXRoZUAyLjAuMyIsICIiLCB7fSwgInNoYTUxMi1XVWpHY0FxUDFnUWFjb1FlK09CSnNGQTdMZDREeVh1VUlqWjVjYzc1Y0xIdko3ZHROc1R1Z3BoeElBRHdzcFMrQXJhQVVlUENLclNWdFBMRmovRjg4dz09Il0sCgogICAgInBpY29jb2xvcnMiOiBbInBpY29jb2xvcnNAMS4xLjEiLCAiIiwge30sICJzaGE1MTIteGNlSDJzbmh0YjVNOWxpcURzbUV3NTZsZTM3Nm1UWmtFWC9qRWIvUnhORnllZ051bDdlTnNsQ1hQOUZEai9MY3UwWDhLRXlNY2VQMm50cGFIckRFVkE9PSJdLAoKICAgICJwaWNvbWF0Y2giOiBbInBpY29tYXRjaEA0LjAuNCIsICIiLCB7fSwgInNoYTUxMi1RUDg4QkFLdk1hbS8zTnhINnZqMm8yMVI2TWp4WlVBZDZubHdBUy9wbkd2TjlJVkxvY0xIeEdZSXpGaGc2ZlVRKzV0aDZQNGR2NGVXOWpYM0RTSWo3QT09Il0sCgogICAgInBvc3Rjc3MiOiBbInBvc3Rjc3NAOC41LjE1IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIm5hbm9pZCI6ICJeMy4zLjEyIiwgInBpY29jb2xvcnMiOiAiXjEuMS4xIiwgInNvdXJjZS1tYXAtanMiOiAiXjEuMi4xIiB9IH0sICJzaGE1MTItRmZSOHNqZDRlbTJUNmZiM0kyTXdBSlU3SFdWTXI5emJhK2VubVFlZVdGZkNibStVT0MvMFg0RFM4WHRwVVRNd1dNR2JqS1lQN3hqZk5la3p5R21CM0E9PSJdLAoKICAgICJyZWFjdCI6IFsicmVhY3RAMTkuMi42IiwgIiIsIHt9LCAic2hhNTEyLXNmV0dHZmF2aTB4cjhQZzBzVnN5SE1BT3ppVllLZ1BMTnJTN2lnK2l2TU5iM3diQ0J3M0t4dGZsc0dCQXdEM2dZUWxFL0FFWnNUTGdUb1JyU0NqYjBRPT0iXSwKCiAgICAicmVhY3QtZGF5LXBpY2tlciI6IFsicmVhY3QtZGF5LXBpY2tlckA5LjE0LjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGRhdGUtZm5zL3R6IjogIl4xLjQuMSIsICJAdGFiYnlfYWkvaGlqcmktY29udmVydGVyIjogIjEuMC41IiwgImRhdGUtZm5zIjogIl40LjEuMCIsICJkYXRlLWZucy1qYWxhbGkiOiAiNC4xLjAtMCIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJyZWFjdCI6ICI+PTE2LjguMCIgfSB9LCAic2hhNTEyLXRCYW9EV2pQd2UwTTVwR3J1bTRIMFNSNkx5aytCTzlvSG5wOUpiS3BHS1cybWxyYU5QZ1A5Qk1mc2c1cFdwd3Jzc0FSbWVxazdZQmwyb1h1dFpUYUhBPT0iXSwKCiAgICAicmVhY3QtZG9tIjogWyJyZWFjdC1kb21AMTkuMi42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInNjaGVkdWxlciI6ICJeMC4yNy4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgInJlYWN0IjogIl4xOS4yLjYiIH0gfSwgInNoYTUxMi0wcHJNSStodkJiUGpzV254REx4bENHeU04UE42VXVXakVVQ1ltWmhPNjd4SVY5WGFzYS9yL3ZEbnErWHlxNExvMjdnOFFTYk81WXpBUnUwRDFTcHMzZz09Il0sCgogICAgInJlcXVpcmUtZGlyZWN0b3J5IjogWyJyZXF1aXJlLWRpcmVjdG9yeUAyLjEuMSIsICIiLCB7fSwgInNoYTUxMi1mR3hFSTcrd3NHOXhydmRqc3JsbUwyMk9NVFRpSFJ3QU1yb2lFZU1ncThnem9MQy9QUXI3UnNSRFNUTFVnL2JaQVp0RitUVklrSGM2LzRSSUtydWkrUT09Il0sCgogICAgInJlc2VsZWN0IjogWyJyZXNlbGVjdEA1LjIuMCIsICIiLCB7fSwgInNoYTUxMi1BZ1ozVU9abTNZbmRmcko0T1lqZ3JUN2JtQ20vMWlxa2p2RWZIL29ZanpoNlBEMnF3NFF1VDNqam5YSXJwZHQ0TVRwTVhjbE1UM2xYYm1SWStYUmFrdz09Il0sCgogICAgInJvbGxkb3duIjogWyJyb2xsZG93bkAxLjAuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAb3hjLXByb2plY3QvdHlwZXMiOiAiPTAuMTMwLjAiLCAiQHJvbGxkb3duL3BsdWdpbnV0aWxzIjogIl4xLjAuMCIgfSwgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQHJvbGxkb3duL2JpbmRpbmctYW5kcm9pZC1hcm02NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1kYXJ3aW4tYXJtNjQiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1mcmVlYnNkLXg2NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmIjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LWFybTY0LWdudSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsIjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXBwYzY0LWdudSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1zMzkweC1nbnUiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctbGludXgteDY0LWdudSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC14NjQtbXVzbCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1vcGVuaGFybW9ueS1hcm02NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy13YXNtMzItd2FzaSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjIjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLXdpbjMyLXg2NC1tc3ZjIjogIjEuMC4xIiB9LCAiYmluIjogeyAicm9sbGRvd24iOiAiYmluL2NsaS5tanMiIH0gfSwgInNoYTUxMi1YMEtRSGxqTm5Fa1dOcXFpejl6SnJHdW5oMUIwSGdPeExYdm5GcENPY2FkemN5NXFvaFozdHFNRVVnMDB2bmNvUm92WHVLM1pxQ1Q5S25uS3pvSW5GUT09Il0sCgogICAgInJ4anMiOiBbInJ4anNANy44LjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuMS4wIiB9IH0sICJzaGE1MTItZGhLZjkwM1UvUFFaWTZib05OdEFHZFdiRzg1V0FialQvMXhZb1pJQzdGQVkweVdhcE9CUVZzVnJEbDU4Vzg2Ly9lMVZwTU5CdFJWNE1hWGZkTXlTRkE9PSJdLAoKICAgICJzY2hlZHVsZXIiOiBbInNjaGVkdWxlckAwLjI3LjAiLCAiIiwge30sICJzaGE1MTItZU52K1dyVmJLdTFmM3ZiWUpUL3h0aUY1c3lBNUhQSU10ZjlJZ1kvbktnMHNXcXpBVUV2cVkveG03T2NaYy9xYWZMeC9pTzlGZ09tZVNBcDR2NXRpL1E9PSJdLAoKICAgICJzZW12ZXIiOiBbInNlbXZlckA3LjguMCIsICIiLCB7ICJiaW4iOiB7ICJzZW12ZXIiOiAiYmluL3NlbXZlci5qcyIgfSB9LCAic2hhNTEyLUFjTTdkVi81dWw0RWVrb1EyOUFnbTV2cmk4Sk5xUnlqMzlvMHFwWDZ2REYyR1pydHV0Wmw1UndnRDFYblpqaVRBZm5jc0poTUk0OFFRSDNzTjg3WU5BPT0iXSwKCiAgICAic2hhcnAiOiBbInNoYXJwQDAuMzQuNSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAaW1nL2NvbG91ciI6ICJeMS4wLjAiLCAiZGV0ZWN0LWxpYmMiOiAiXjIuMS4yIiwgInNlbXZlciI6ICJeNy43LjMiIH0sICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtZGFyd2luLWFybTY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLWRhcndpbi14NjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWRhcndpbi14NjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybSI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgtYXJtNjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1yaXNjdjY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1zMzkweCI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgteDY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4bXVzbC14NjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saW51eC1hcm0iOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgtYXJtNjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgtcHBjNjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgtcmlzY3Y2NCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC1saW51eC1zMzkweCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC1saW51eC14NjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXhtdXNsLWFybTY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLWxpbnV4bXVzbC14NjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtd2FzbTMyIjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLXdpbjMyLWFybTY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLXdpbjMyLWlhMzIiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtd2luMzIteDY0IjogIjAuMzQuNSIgfSB9LCAic2hhNTEyLU91OUk1RnQ5V05jQ2JYclU5Y01nUEJjQ0s4TGl3THFjYnl3VzN0NG9EVjM3bjFwenB1TkxzWWlBVjhlT0RuamJ0UWxTRHdaMmNVRWVRejRFNTRIbHRnPT0iXSwKCiAgICAic2hlbGwtcXVvdGUiOiBbInNoZWxsLXF1b3RlQDEuOC4zIiwgIiIsIHt9LCAic2hhNTEyLU9ibW5JRjRoWE5nMUJxaG5IbWdiREVURjhkTFBDZ2daV0Jqa1FmaFpwYnN6Wm5ZdXI1RFVsalRjQ0hpaTVMQzNKNUUweWVPLzFMSU15SCtVdkhRZ3l3PT0iXSwKCiAgICAic2lnaW5mbyI6IFsic2lnaW5mb0AyLjAuMCIsICIiLCB7fSwgInNoYTUxMi15YngwV08xLzhiU0JMRVdYWnZFZDdnTVczU24zSkZsVzNUdlgxblJFYkRMUk5RTmFlTk44V0swbWVCd1BkQWFPSTdUdFJSUkpuL0VzMXpocnJDSHU3Zz09Il0sCgogICAgInNvdXJjZS1tYXAiOiBbInNvdXJjZS1tYXBAMC42LjEiLCAiIiwge30sICJzaGE1MTItVWpnYXB1bVdsYk1oa0JnelQ3WWtjNVlYVVQ0NkYwaUt1OFNHWHEwYmN3UDVkei9oMFBsajZlbkpxanoxWmJxMmw1V2FxWW5yVmJ3V09XTXlGM0Y0N2c9PSJdLAoKICAgICJzb3VyY2UtbWFwLWpzIjogWyJzb3VyY2UtbWFwLWpzQDEuMi4xIiwgIiIsIHt9LCAic2hhNTEyLVVYV01LaExPd1ZLYjcyOElVdFFQWHhmWVUrdXNkeWJ0VXJLLzh1R0U4Q1FNdnJoT3B3dnpEQndqMFFoU0w3TVFjN3ZJc0lTQkc4VlE4K0lEUXhwZlFBPT0iXSwKCiAgICAic291cmNlLW1hcC1zdXBwb3J0IjogWyJzb3VyY2UtbWFwLXN1cHBvcnRAMC41LjIxIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImJ1ZmZlci1mcm9tIjogIl4xLjAuMCIsICJzb3VyY2UtbWFwIjogIl4wLjYuMCIgfSB9LCAic2hhNTEyLXVCSFUzTDNjenNJeVlYS1g4OGZkckdvdnhkU0NvVEdEUlo2U1lYdFNSeExaVXpIZzVQLzY2SHQ2dW9VbEh1OUVab2QraW5YaEtvM3FRZ3dYVVQveTF3PT0iXSwKCiAgICAic3RhY2tiYWNrIjogWyJzdGFja2JhY2tAMC4wLjIiLCAiIiwge30sICJzaGE1MTItMVhNSkU1ZlFvMWpHSDZZLzdlYm53UE9CRWtJRW5UNFFGMzJkNVIxK1ZYZFh2ZU0wSUJNSnQ4emZheFgxUDNRaFZ3clllKzU3Nitqa0FOdFNTMm1CYnc9PSJdLAoKICAgICJzdGQtZW52IjogWyJzdGQtZW52QDQuMS4wIiwgIiIsIHt9LCAic2hhNTEyLVJxN3liY1gyUnVDNTVyOW9hUFZFVzcveHUzdGo4dTRHZUJZSEJXQ3ljaEZ0ek1Jcjg2QTdlM1BQRUJQVDM3c0hTdEtYMytUaVgvRnIvQUNtSkxWbExRPT0iXSwKCiAgICAic3RyaW5nLXdpZHRoIjogWyJzdHJpbmctd2lkdGhANC4yLjMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZW1vamktcmVnZXgiOiAiXjguMC4wIiwgImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50IjogIl4zLjAuMCIsICJzdHJpcC1hbnNpIjogIl42LjAuMSIgfSB9LCAic2hhNTEyLXdLeVFSUXBqSjBzSXA2MkVyU1pkR3NqTUpXc2FwNW9STmloSGh1Nkc3SlZPLzlqSUI2VXlldkwrdFh1T3Fybmc4ai9jeEtUV3lXVXd2U1RyaWlaei9nPT0iXSwKCiAgICAic3RyaXAtYW5zaSI6IFsic3RyaXAtYW5zaUA2LjAuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJhbnNpLXJlZ2V4IjogIl41LjAuMSIgfSB9LCAic2hhNTEyLVkzOFZQU0hjcWtGckNwRm5ROXZ1U1htcXV1djVvWE9LcEdlVDZhR3JyM28zR2M5QWxWYTZKQmZVU09DbmJ4R0daRisvMG9vSTdLclB1VVN6dFVkVTVBPT0iXSwKCiAgICAic3R5bGVkLWpzeCI6IFsic3R5bGVkLWpzeEA1LjEuNiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjbGllbnQtb25seSI6ICIwLjAuMSIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJyZWFjdCI6ICI+PSAxNi44LjAgfHwgMTcueC54IHx8IF4xOC4wLjAtMCB8fCBeMTkuMC4wLTAiIH0gfSwgInNoYTUxMi1xU1Z5RFRlTW90ZHZRWW9IV0xOR3dSRkpIQytpK1p2ZEJSWW9zT0ZnQytXZzF2eDRmck4yL1JHL05BN1NZcXF2S05MZjM5UDJMU1JBMnB1Nm4wWFlaQT09Il0sCgogICAgInN1cHBvcnRzLWNvbG9yIjogWyJzdXBwb3J0cy1jb2xvckA4LjEuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJoYXMtZmxhZyI6ICJeNC4wLjAiIH0gfSwgInNoYTUxMi1NcFVFTjJPb2R0VXp4dktRbDcyY1VGN1JRNUVpSHNHdlNzVkcwaWE5YzVSYldHTDJDSTRDN0VwUFM4VVRCSXBsbmx6WmlOdVY1NncrRnVOeHkzdHkyUT09Il0sCgogICAgInRhaWx3aW5kLW1lcmdlIjogWyJ0YWlsd2luZC1tZXJnZUAzLjYuMCIsICIiLCB7fSwgInNoYTUxMi11eEw3cUFWUXJpcVJRUEF5SzNwajY2VnFza1dxb1ozN1BXOTRqd09Ud05mcS96OW95dTFWK2VxclpxdFIyK2ZDaVhkWU9aZS9Nb2R0OEd0dnFOenUrdz09Il0sCgogICAgInRhaWx3aW5kY3NzIjogWyJ0YWlsd2luZGNzc0A0LjMuMCIsICIiLCB7fSwgInNoYTUxMi15Nm54TUdCMW5NVzlSNms5NmU1Z2RJRnpjZkwvZ1RKUk5hcUdlczFZdmtMblBWWHpXZ2JxRkYyeUxDMFQ4Rzc3NG4yNGN4M1BlOFhyS29uaUNPQUgrUT09Il0sCgogICAgInRhcGFibGUiOiBbInRhcGFibGVAMi4zLjMiLCAiIiwge30sICJzaGE1MTItdXhjL3pwcUZnNng3Qzh2T0U3bGg2TGJkYThlRUw5em1WbS9QTGVUUEJSaGgxeENnZFdhUStKMUNVaWVHcElmbTJIZHRzVXBSditIc2hpYXNCTWNjNkE9PSJdLAoKICAgICJ0ZXJzZXIiOiBbInRlcnNlckA1LjE2LjkiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlLW1hcCI6ICJeMC4zLjIiLCAiYWNvcm4iOiAiXjguNS4wIiwgImNvbW1hbmRlciI6ICJeMi4yMC4wIiwgInNvdXJjZS1tYXAtc3VwcG9ydCI6ICJ+MC41LjIwIiB9LCAiYmluIjogeyAidGVyc2VyIjogImJpbi90ZXJzZXIiIH0gfSwgInNoYTUxMi1IUGEvRmRUQjlYR0kySDEva2VMRlpIeGw2V052QUk0WWFsSEd0RFFUbE1uSmNvcVNhYjFVd0w0bDFoR0VoczYvR21MSEJaSWcvWWdCKytqY2J6b09FZz09Il0sCgogICAgInRpbnliZW5jaCI6IFsidGlueWJlbmNoQDIuOS4wIiwgIiIsIHt9LCAic2hhNTEyLTArRFV2cVdNVmFsTG1oYTZscjRrRDhpQU1LMUh6VjAvYUtuQ3RXYjl2OTY0MVRuUC9NRmI3UGMyYnhveFFqVFhBRXJyeVhWZ1VPZnYyWXFObGxxR2VnPT0iXSwKCiAgICAidGlueWV4ZWMiOiBbInRpbnlleGVjQDEuMS4yIiwgIiIsIHt9LCAic2hhNTEyLWRBcVNxRS9SYWJwQktJOCtoMjZHZkxxNlZiM0pWWHMzMFhZUWpkTWphai9jMnRTOElZWU1iSXpQNTk5S3RSajdjNTcvd1lBcGIzUWpnUmdYbXJDdWtBPT0iXSwKCiAgICAidGlueWdsb2JieSI6IFsidGlueWdsb2JieUAwLjIuMTYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZmRpciI6ICJeNi41LjAiLCAicGljb21hdGNoIjogIl40LjAuNCIgfSB9LCAic2hhNTEyLXBuOTlWaG9BQ1lSOG5GSGh4cWl4K3V2c2JYaW5lQWFzV201b2pYb044eEV3SzVLZDMvVHJoTm4xd0J5dUQ1MlV4V1JMeThwdStrUk1uaUVpNkVxOVpnPT0iXSwKCiAgICAidGlueXJhaW5ib3ciOiBbInRpbnlyYWluYm93QDMuMS4wIiwgIiIsIHt9LCAic2hhNTEyLUJmK0lMbUJncmV0VXJkSnh6WE0wU2dYTFozWGZpYVV1T2ovSUtRSHVUWGlwKzA1WG4rdXlFWWRWZzBrWURpcFRCY0xyQ1Z5VXpBUHo3UW1BcmIwbW13PT0iXSwKCiAgICAidHJlZS1raWxsIjogWyJ0cmVlLWtpbGxAMS4yLjIiLCAiIiwgeyAiYmluIjogeyAidHJlZS1raWxsIjogImNsaS5qcyIgfSB9LCAic2hhNTEyLUwwT3JwaThxR3BSRy8vTmQrSDkwdkZCKzNpSG51ZTF6U1NHbU5PT0NoMUdMSjdyVUtWd1YySHZpanBoR1FTMlVtaFVaZXdTOVZndnhZSWRncitmRzFBPT0iXSwKCiAgICAidHNsaWIiOiBbInRzbGliQDIuOC4xIiwgIiIsIHt9LCAic2hhNTEyLW9KRnU5NEhRYitLVmR1U1VRTDd3bnBtcW5mbUxzT0EvbkFoNmI2RUgwd0NFb0swL21QZVhVNmMzd0tEVjgzTWtPdUhQUkh0U1hLS1U5OUlCYXpTLzJ3PT0iXSwKCiAgICAidHlwZXNjcmlwdCI6IFsidHlwZXNjcmlwdEA1LjkuMyIsICIiLCB7ICJiaW4iOiB7ICJ0c2MiOiAiYmluL3RzYyIsICJ0c3NlcnZlciI6ICJiaW4vdHNzZXJ2ZXIiIH0gfSwgInNoYTUxMi1qbDF2WnpQRGluTHI5ZVV0M0ovdDdWNkZnTkV3OVFqdkJQZHlzejlLZlFERDQxZlFyQzJZNHZLUWRpYVVwRlQ0YlhsYjFSSGhMcHA4d3RtNk01VGdTdz09Il0sCgogICAgInVuZGljaS10eXBlcyI6IFsidW5kaWNpLXR5cGVzQDYuMjEuMCIsICIiLCB7fSwgInNoYTUxMi1pd0RacWcwUUFHcmc5UmF2NUg0bjBNNjRjM21rUjU5Y0o2d1FwKzdDNG5JMGdzbUV4YWVkYVlMTk80NGVUNEF0QkJ3amJUaUdQTWx0Mk1kMFQ5SDlKUT09Il0sCgogICAgInVzZS1zeW5jLWV4dGVybmFsLXN0b3JlIjogWyJ1c2Utc3luYy1leHRlcm5hbC1zdG9yZUAxLjYuMCIsICIiLCB7ICJwZWVyRGVwZW5kZW5jaWVzIjogeyAicmVhY3QiOiAiXjE2LjguMCB8fCBeMTcuMC4wIHx8IF4xOC4wLjAgfHwgXjE5LjAuMCIgfSB9LCAic2hhNTEyLVBwNkdTd0dQL05yUElyeFZGQUlrT1FleXc4bEZlbk9IaWpRV2tVVHJEdnJGNEFMcXlsUDJDL0tDa2VTOWRwVU0zS3ZZUlFobmE1dnQ3SUw5NStaUTl3PT0iXSwKCiAgICAidml0ZSI6IFsidml0ZUA4LjAuMTMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAibGlnaHRuaW5nY3NzIjogIl4xLjMyLjAiLCAicGljb21hdGNoIjogIl40LjAuNCIsICJwb3N0Y3NzIjogIl44LjUuMTQiLCAicm9sbGRvd24iOiAiMS4wLjEiLCAidGlueWdsb2JieSI6ICJeMC4yLjE2IiB9LCAib3B0aW9uYWxEZXBlbmRlbmNpZXMiOiB7ICJmc2V2ZW50cyI6ICJ+Mi4zLjMiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL25vZGUiOiAiXjIwLjE5LjAgfHwgPj0yMi4xMi4wIiwgIkB2aXRlanMvZGV2dG9vbHMiOiAiXjAuMS4xOCIsICJlc2J1aWxkIjogIl4wLjI3LjAgfHwgXjAuMjguMCIsICJqaXRpIjogIj49MS4yMS4wIiwgImxlc3MiOiAiXjQuMC4wIiwgInNhc3MiOiAiXjEuNzAuMCIsICJzYXNzLWVtYmVkZGVkIjogIl4xLjcwLjAiLCAic3R5bHVzIjogIj49MC41NC44IiwgInN1Z2Fyc3MiOiAiXjUuMC4wIiwgInRlcnNlciI6ICJeNS4xNi4wIiwgInRzeCI6ICJeNC44LjEiLCAieWFtbCI6ICJeMi40LjIiIH0sICJvcHRpb25hbFBlZXJzIjogWyJAdHlwZXMvbm9kZSIsICJAdml0ZWpzL2RldnRvb2xzIiwgImVzYnVpbGQiLCAiaml0aSIsICJsZXNzIiwgInNhc3MiLCAic2Fzcy1lbWJlZGRlZCIsICJzdHlsdXMiLCAic3VnYXJzcyIsICJ0ZXJzZXIiLCAidHN4IiwgInlhbWwiXSwgImJpbiI6IHsgInZpdGUiOiAiYmluL3ZpdGUuanMiIH0gfSwgInNoYTUxMi1NRnRqQllnem1TeG1nQTRSQWZqSXlYV3BHZTFvQUxuamdVVHp6VjdRTHgvVEt4Q3pqdE1INkZkOS9lVksrNUZnMXFOb3o1VkF3c21Ncy9Ob2ZybUp2dz09Il0sCgogICAgInZpdGVzdCI6IFsidml0ZXN0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvZXhwZWN0IjogIjQuMS42IiwgIkB2aXRlc3QvbW9ja2VyIjogIjQuMS42IiwgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6ICI0LjEuNiIsICJAdml0ZXN0L3J1bm5lciI6ICI0LjEuNiIsICJAdml0ZXN0L3NuYXBzaG90IjogIjQuMS42IiwgIkB2aXRlc3Qvc3B5IjogIjQuMS42IiwgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAiZXMtbW9kdWxlLWxleGVyIjogIl4yLjAuMCIsICJleHBlY3QtdHlwZSI6ICJeMS4zLjAiLCAibWFnaWMtc3RyaW5nIjogIl4wLjMwLjIxIiwgIm9idWciOiAiXjIuMS4xIiwgInBhdGhlIjogIl4yLjAuMyIsICJwaWNvbWF0Y2giOiAiXjQuMC4zIiwgInN0ZC1lbnYiOiAiXjQuMC4wLXJjLjEiLCAidGlueWJlbmNoIjogIl4yLjkuMCIsICJ0aW55ZXhlYyI6ICJeMS4wLjIiLCAidGlueWdsb2JieSI6ICJeMC4yLjE1IiwgInRpbnlyYWluYm93IjogIl4zLjEuMCIsICJ2aXRlIjogIl42LjAuMCB8fCBeNy4wLjAgfHwgXjguMC4wIiwgIndoeS1pcy1ub2RlLXJ1bm5pbmciOiAiXjIuMy4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBlZGdlLXJ1bnRpbWUvdm0iOiAiKiIsICJAb3BlbnRlbGVtZXRyeS9hcGkiOiAiXjEuOS4wIiwgIkB0eXBlcy9ub2RlIjogIl4yMC4wLjAgfHwgXjIyLjAuMCB8fCA+PTI0LjAuMCIsICJAdml0ZXN0L2Jyb3dzZXItcGxheXdyaWdodCI6ICI0LjEuNiIsICJAdml0ZXN0L2Jyb3dzZXItcHJldmlldyI6ICI0LjEuNiIsICJAdml0ZXN0L2Jyb3dzZXItd2ViZHJpdmVyaW8iOiAiNC4xLjYiLCAiQHZpdGVzdC9jb3ZlcmFnZS1pc3RhbmJ1bCI6ICI0LjEuNiIsICJAdml0ZXN0L2NvdmVyYWdlLXY4IjogIjQuMS42IiwgIkB2aXRlc3QvdWkiOiAiNC4xLjYiLCAiaGFwcHktZG9tIjogIioiLCAianNkb20iOiAiKiIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkBlZGdlLXJ1bnRpbWUvdm0iLCAiQG9wZW50ZWxlbWV0cnkvYXBpIiwgIkB0eXBlcy9ub2RlIiwgIkB2aXRlc3QvYnJvd3Nlci1wbGF5d3JpZ2h0IiwgIkB2aXRlc3QvYnJvd3Nlci1wcmV2aWV3IiwgIkB2aXRlc3QvYnJvd3Nlci13ZWJkcml2ZXJpbyIsICJAdml0ZXN0L2NvdmVyYWdlLWlzdGFuYnVsIiwgIkB2aXRlc3QvY292ZXJhZ2UtdjgiLCAiQHZpdGVzdC91aSIsICJoYXBweS1kb20iLCAianNkb20iXSwgImJpbiI6IHsgInZpdGVzdCI6ICJ2aXRlc3QubWpzIiB9IH0sICJzaGE1MTItNmx2amJTM3A5YjRDcmRDbWd1emJoMi80dW9YaEdFMnE3MVI0T1g1c3FGOVIxYm85WGQ2ZkdyTUFmdnA1d25DemxCbkZWZENPcDZvbnVUUVZibzhpVVE9PSJdLAoKICAgICJ3aHktaXMtbm9kZS1ydW5uaW5nIjogWyJ3aHktaXMtbm9kZS1ydW5uaW5nQDIuMy4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInNpZ2luZm8iOiAiXjIuMC4wIiwgInN0YWNrYmFjayI6ICIwLjAuMiIgfSwgImJpbiI6IHsgIndoeS1pcy1ub2RlLXJ1bm5pbmciOiAiY2xpLmpzIiB9IH0sICJzaGE1MTItaFVybWFXQmRWRGN4dllxbnloMDl6dW5LelJPV2piWlRpTnk4ZEJFamtTN2VoRURRaWJYSjdYdmxtdGJ3dVRjbFVpSXlOK0N5WFFENFZta284Zk5tOHc9PSJdLAoKICAgICJ3cmFwLWFuc2kiOiBbIndyYXAtYW5zaUA3LjAuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJhbnNpLXN0eWxlcyI6ICJeNC4wLjAiLCAic3RyaW5nLXdpZHRoIjogIl40LjEuMCIsICJzdHJpcC1hbnNpIjogIl42LjAuMCIgfSB9LCAic2hhNTEyLVlWR0lqMmthbUxTVHh3Nk5zWmpvQnhmU3dzbjB5Y2Rlc21jNHArUTIxYzV6UHVaMXBsK05meFZkeFB0ZEh2bU5WT1E2WFNZRzRBVXR5dC9GaTdEMTZRPT0iXSwKCiAgICAieTE4biI6IFsieTE4bkA1LjAuOCIsICIiLCB7fSwgInNoYTUxMi0wcGZGemVnZURXSkhKSUFtVExSUDJEd0hqZEY1czdqbzl0dXp0ZFF4QWhJTkNkdlMrM25HSU5xUGQwMEFwaHFKUi8wTGhBTlVTNi8rN1NDYjk4WU9mQT09Il0sCgogICAgInlhbWwiOiBbInlhbWxAMi45LjAiLCAiIiwgeyAiYmluIjogeyAieWFtbCI6ICJiaW4ubWpzIiB9IH0sICJzaGE1MTItMkF2aE5YM21iOHpkNlp5N0lOVHRTcGwxRjE1SFc2V25xajBzcldsa0tMY3BZbC9nTUlNSml5dUdxMktlSTJZRnhVUGpkbEIrM0xjMTBzZU1MdEw0Y0E9PSJdLAoKICAgICJ5YXJncyI6IFsieWFyZ3NAMTcuNy4yIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImNsaXVpIjogIl44LjAuMSIsICJlc2NhbGFkZSI6ICJeMy4xLjEiLCAiZ2V0LWNhbGxlci1maWxlIjogIl4yLjAuNSIsICJyZXF1aXJlLWRpcmVjdG9yeSI6ICJeMi4xLjEiLCAic3RyaW5nLXdpZHRoIjogIl40LjIuMyIsICJ5MThuIjogIl41LjAuNSIsICJ5YXJncy1wYXJzZXIiOiAiXjIxLjEuMSIgfSB9LCAic2hhNTEyLTdkU3p6UlErK0NLbk5JL2tyS25ZUlY3SktLUFVYTUVoNjFzb2FIS2c5bXJXRWh6RldoRm54UHhHbCs2OWNEMU91NjNDMTNOVVBDbm1JY3J2cUN1TTZ3PT0iXSwKCiAgICAieWFyZ3MtcGFyc2VyIjogWyJ5YXJncy1wYXJzZXJAMjEuMS4xIiwgIiIsIHt9LCAic2hhNTEyLXRWcHNKVzdEZGplY0FpRnBiSUIxZTNxeElRc0U2Tm9QYzUvZVRkcmJiSUM0aDBMVnNXaG5vYTNnK20ySGNsQkl1akh6c3haNFZKVkErR1V1YzIvTEJ3PT0iXSwKCiAgICAiem9kIjogWyJ6b2RANC40LjMiLCAiIiwge30sICJzaGE1MTIteXRFTkZqSUpGbDJVd1lnbGRlMmpjaFcySHdtNEdKRkxEaVNYV2RUckpRQklOOUZjeXA3bjREaHhKRWlXTkFKTVYxL0JxV2ZXL2trZzcxVURjSEp5VFE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQGVtbmFwaS9jb3JlIjogWyJAZW1uYXBpL2NvcmVAMS4xMC4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvd2FzaS10aHJlYWRzIjogIjEuMi4xIiwgInRzbGliIjogIl4yLjQuMCIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTIteXE2T2tKNHA4MkNBZlBsMHU5bVFlYlFIS1BKa1k3V3JJdWsyMDVjVFluWWUrazJaOFlCaDExRnJiUkcvSDZpaGlycWNhY09nbDJCSU84b3lNUUxlWHc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQGVtbmFwaS9ydW50aW1lIjogWyJAZW1uYXBpL3J1bnRpbWVAMS4xMC4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRzbGliIjogIl4yLjQuMCIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItZXd2WWxrODZ4VW9HSTB6UVJOcS9tQysxNlIxUWVEbEtReTIxS2kzb1NZWE5nTGI0NUdWMVA2QTBNKy9zNm55Q3VORHFlNVZwYVk4NEJ6WEd3VmJ3RkE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQGVtbmFwaS93YXNpLXRocmVhZHMiOiBbIkBlbW5hcGkvd2FzaS10aHJlYWRzQDEuMi4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRzbGliIjogIl4yLjQuMCIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItdVRJSTdPWUYrL01lcy9NcmNJT1lwNXlPdFNNTEJXU0lvTFBwY2d3aXBvaUtibGk2azMyMnRjb0ZzeG9JSXhQRHFXMDFTUUdBZ2tvNEV6WmkyQk52Mnc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQG5hcGktcnMvd2FzbS1ydW50aW1lIjogWyJAbmFwaS1ycy93YXNtLXJ1bnRpbWVAMS4xLjQiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHR5YnlzL3dhc20tdXRpbCI6ICJeMC4xMC4xIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvY29yZSI6ICJeMS43LjEiLCAiQGVtbmFwaS9ydW50aW1lIjogIl4xLjcuMSIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItM05RTk5nQTFZU2xKYi9rTUgxaWxkQVNQOUhXNy83a1luUkkyc3pXSmFvZmFTMWhXbWJHSTRIK2QzKzIyYUd6WFhOOUlKK24rR2lGVmNHaXBKUDE4b3c9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQHR5YnlzL3dhc20tdXRpbCI6IFsiQHR5YnlzL3dhc20tdXRpbEAwLjEwLjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9LCAiYnVuZGxlZCI6IHRydWUgfSwgInNoYTUxMi1Sb0J2SjJYMHd1S2xXRklqcndmZkd3MUlxWkhLUXF6SWNoS2FhZFpaZm5OcHNBWXAybU0waDM2SnRQQ2pOREFIR2dZZXovMTV1TUJwZkd3Y2hoaU1nZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS13YXNtMzItd2FzaS90c2xpYiI6IFsidHNsaWJAMi44LjEiLCAiIiwgeyAiYnVuZGxlZCI6IHRydWUgfSwgInNoYTUxMi1vSkZ1OTRIUWIrS1ZkdVNVUUw3d25wbXFuZm1Mc09BL25BaDZiNkVIMHdDRW9LMC9tUGVYVTZjM3dLRFY4M01rT3VIUFJIdFNYS0tVOTlJQmF6Uy8ydz09Il0sCgogICAgImNoYWxrL3N1cHBvcnRzLWNvbG9yIjogWyJzdXBwb3J0cy1jb2xvckA3LjIuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJoYXMtZmxhZyI6ICJeNC4wLjAiIH0gfSwgInNoYTUxMi1xcENBdlJsOXN0dU9IdmVLc243SG5jSlJ2djUwMXFJYWNLelFsTy8rTHd4YzkrMHEyd0x5djREZnZ0ODAvRFBuMnBxT0JzSmREaW9nWEdSOStPdndSdz09Il0sCgogICAgIm5leHQvcG9zdGNzcyI6IFsicG9zdGNzc0A4LjQuMzEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAibmFub2lkIjogIl4zLjMuNiIsICJwaWNvY29sb3JzIjogIl4xLjAuMCIsICJzb3VyY2UtbWFwLWpzIjogIl4xLjAuMiIgfSB9LCAic2hhNTEyLVBTMDhJYm9pYTltdHMvMnlnVjNlTHBZNWdoblVjZkxWL0VYVE9XMUUycVl4SktHR0JVdE5qTjc2RllIbk1zMzZSbUFSbjQxYkMwQVptbityUjBPVnBRPT0iXSwKICB9Cn0K" }, { "path": "metadata.json", "kind": "text", "content": '{\n "id": "restaurant",\n "name": "Restaurant",\n "tagline": "Menu-driven storefront with reservations and table-service support.",\n "industry": "food",\n "tags": ["food", "restaurant", "reservations"],\n "stability": "stable",\n "schemaType": "Restaurant",\n "mock": {\n "seedName": "restaurant",\n "seedBusinessId": "bus_mamas_kitchen"\n }\n}\n' }, { "path": "next.config.ts", "kind": "text", "content": 'import type { NextConfig } from "next";\n\n// Same-origin proxy target for the storefront API. The public key\n// decides: a real `cpk_live_\u2026` / `cpk_test_\u2026` only resolves against\n// hosted Cimplify, so browser cart writes go to the same place the\n// server catalogue reads come from. Anything else (`mock-dev`, empty)\n// falls back to the local `cimplify dev` mock in dev.\nconst publicKey = process.env.NEXT_PUBLIC_CIMPLIFY_PUBLIC_KEY?.trim() ?? "";\nconst keyTargetsHostedCimplify =\n publicKey.startsWith("cpk_live_") || publicKey.startsWith("cpk_test_");\nconst STOREFRONT_URL =\n process.env.NODE_ENV === "production" || keyTargetsHostedCimplify\n ? "https://storefronts.cimplify.io"\n : "http://127.0.0.1:8787";\n\nif (STOREFRONT_URL === "http://127.0.0.1:8787") {\n console.warn(\n "[cimplify] next.config resolved the local storefront API URL; production deploys must run with NODE_ENV=production.",\n );\n}\n\n// Cache Components (\'use cache\' + cacheTag/cacheLife) require Node-specific\n// setTimeout atomicity and serialize a postponed state that routinely exceeds\n// CF Workers\' 128MB zlib limit. We\'re on Cloudflare Workers via opennext, so\n// we stay on Next 16\'s "Previous Model" \u2014 `fetch.next.{revalidate,tags}` via\n// the SDK\'s `cacheOptions`, plus `export const revalidate` per page. See\n// https://nextjs.org/docs/app/guides/caching-without-cache-components.\nconst nextConfig: NextConfig = {\n async redirects() {\n return [\n { source: "/login", destination: "/account", permanent: false },\n { source: "/signup", destination: "/account", permanent: false },\n ];\n },\n async rewrites() {\n return [\n { source: "/api/v1/:path*", destination: `${STOREFRONT_URL}/api/v1/:path*` },\n { source: "/img/:path*", destination: `${STOREFRONT_URL}/img/:path*` },\n { source: "/elements/:path*", destination: `${STOREFRONT_URL}/elements/:path*` },\n { source: "/_mock/:path*", destination: `${STOREFRONT_URL}/_mock/:path*` },\n ];\n },\n images: {\n loader: "custom",\n loaderFile: "./lib/cimplify-loader.ts",\n remotePatterns: [\n { protocol: "http", hostname: "127.0.0.1", port: "8787", pathname: "/img/**" },\n { protocol: "http", hostname: "localhost", port: "8787", pathname: "/img/**" },\n { protocol: "http", hostname: "localhost", port: "3000", pathname: "/img/**" },\n { protocol: "https", hostname: "loremflickr.com", pathname: "/**" },\n { protocol: "https", hostname: "images.unsplash.com", pathname: "/**" },\n { protocol: "https", hostname: "static-tmp.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "storefrontassetscdn.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "cdn.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "res.cloudinary.com", pathname: "/cimplify/**" },\n ],\n },\n};\n\nexport default nextConfig;\n' }, { "path": "CLAUDE.md", "kind": "text", "content": "# CLAUDE.md\n\nThis project was scaffolded from a Cimplify storefront template (`cimplify init`).\n\n## Read these first\n\n- **`AGENTS.md`** at the project root \u2014 the file \u2194 `brand.X` field map for *this template's* industry, plus the architectural rules.\n- **`.claude/skills/cimplify-storefront/SKILL.md`** \u2014 the playbook for common tasks (rebrand, add a section, wire a Server Action, deploy, eject a component). Invoke it whenever you're asked to change content, palette, copy, or routing.\n\n## The two-line summary\n\n1. **Edit `lib/brand.ts`** for any visible string.\n2. **Edit `app/globals.css` `@theme` block** for any palette / radius / font change.\n\nThat covers ~95% of what merchants ask for. For anything else, follow the `cimplify-storefront` skill.\n\n## Don't do\n\n- Hardcode strings in pages or components.\n- Enable `cacheComponents: true` in `next.config.ts` \u2014 we're on Cloudflare Workers, where `'use cache'` postponed state blows past CF's 128MB zlib limit. This template stays on Next 16's \"Previous Model\" (ISR): `export const revalidate` per page + `cacheOptions: { revalidate, tags }` on SDK reads.\n- Add `'use cache'`, `cacheTag`, or `cacheLife` anywhere. Use the SDK's `cacheOptions` instead.\n- Use `unstable_cache` \u2014 it's gone in Next 16. Use SDK `cacheOptions` or `fetch.next.{revalidate,tags}`.\n- Run `bun test` (Bun's `vi` shim is incomplete) \u2014 use `bun run test:run`.\n" }, { "path": "app/about/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `About \u2014 ${brand.name}`,\n description: brand.description,\n};\n\nexport default function AboutPage() {\n const a = brand.about;\n const titleParts = a.title.split("\\n");\n return (\n <article className="max-w-3xl mx-auto px-6 sm:px-8 py-16">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2">\n {a.eyebrow}\n </p>\n <h1 className="font-serif text-[clamp(2.25rem,5vw,3.5rem)] font-semibold mb-6 -tracking-[0.02em]">\n {titleParts.map((line, i) => (\n <span key={i}>\n {line}\n {i < titleParts.length - 1 && <br />}\n </span>\n ))}\n </h1>\n <div className="prose prose-lg max-w-none space-y-5 text-foreground/90 leading-relaxed">\n {a.paragraphs.map((p, i) => (\n <p key={i}>{p}</p>\n ))}\n {a.sections.map((s) => (\n <div key={s.heading}>\n <h2 className="font-serif text-3xl font-semibold mt-10 mb-3">{s.heading}</h2>\n <p>{s.body}</p>\n </div>\n ))}\n </div>\n </article>\n );\n}\n' }, { "path": "app/llms.txt/route.ts", "kind": "text", "content": 'import { getServerClient, tags, type Product } from "@cimplify/sdk/server";\nimport { brand } from "@/lib/brand";\nimport { getSiteUrl } from "@/lib/site-url";\n\nexport const revalidate = 3600;\n\nasync function buildLlmsTxt(SITE_URL: string): Promise<string> {\n const client = getServerClient();\n const [productsRes, categoriesRes, collectionsRes] = await Promise.all([\n client.catalogue.getProducts(\n { limit: 500 },\n { cacheOptions: { revalidate: 3600, tags: [tags.products()] } },\n ),\n client.catalogue.getCategories({\n cacheOptions: { revalidate: 3600, tags: [tags.categories()] },\n }),\n client.catalogue.getCollections({\n cacheOptions: { revalidate: 3600, tags: [tags.collections()] },\n }),\n ]);\n\n const products: Product[] = productsRes.ok ? productsRes.value.items : [];\n const categories = categoriesRes.ok ? categoriesRes.value : [];\n const collections = collectionsRes.ok ? collectionsRes.value : [];\n\n const lines: string[] = [];\n lines.push(`# ${brand.name}`);\n lines.push("");\n lines.push(`> ${brand.llms.summary}`);\n lines.push("");\n lines.push("## Browse");\n lines.push(`- [Home](${SITE_URL}/)`);\n lines.push(`- [Shop](${SITE_URL}/shop): Full menu with filter and sort.`);\n\n if (categories.length > 0) {\n lines.push("");\n lines.push("## Categories");\n for (const c of categories) {\n lines.push(\n `- [${c.name}](${SITE_URL}/categories/${c.slug})${c.description ? `: ${c.description}` : ""}`,\n );\n }\n }\n\n if (collections.length > 0) {\n lines.push("");\n lines.push("## Collections");\n for (const c of collections) {\n lines.push(\n `- [${c.name}](${SITE_URL}/collections/${c.slug})${c.description ? `: ${c.description}` : ""}`,\n );\n }\n }\n\n if (products.length > 0) {\n lines.push("");\n lines.push("## Products");\n for (const p of products) {\n const slug = p.slug ?? p.id;\n const price = `${brand.currency} ${p.default_price}`;\n const desc = p.description ? ` \u2014 ${p.description.replace(/\\s+/g, " ").slice(0, 200)}` : "";\n lines.push(`- [${p.name}](${SITE_URL}/shop?product=${slug}) (${price})${desc}`);\n }\n }\n\n lines.push("");\n lines.push("## Information");\n lines.push(`- [About](${SITE_URL}/about)`);\n lines.push(`- [FAQ](${SITE_URL}/faq)`);\n lines.push(`- [Terms of Service](${SITE_URL}/terms)`);\n lines.push(`- [Privacy Policy](${SITE_URL}/privacy)`);\n lines.push(`- [Sitemap (XML)](${SITE_URL}/sitemap.xml)`);\n lines.push("");\n lines.push("## Contact");\n lines.push(`- Email: ${brand.contact.email}`);\n lines.push(`- Phone: ${brand.contact.phone}`);\n lines.push(`- Address: ${brand.contact.address}`);\n\n return lines.join("\\n") + "\\n";\n}\n\n/**\n * `/llms.txt` \u2014 machine-readable site index for LLMs (per llmstxt.org).\n * Lets coding agents and chat assistants find products, categories, and\n * support pages without scraping HTML. Plain Markdown so it streams cheaply\n * into context windows.\n */\nexport async function GET(): Promise<Response> {\n const body = await buildLlmsTxt(await getSiteUrl());\n return new Response(body, {\n headers: {\n "Content-Type": "text/plain; charset=utf-8",\n "Cache-Control": "public, max-age=0, s-maxage=3600, stale-while-revalidate=86400",\n },\n });\n}\n' }, { "path": "app/contact/contact-form.tsx", "kind": "text", "content": `"use client";
|
|
2249
|
+
` }, { "path": "lib/site-url.ts", "kind": "text", "content": 'import { SITE_URL } from "./site.config";\n\n/** Canonical absolute URL for this storefront. */\nexport async function getSiteUrl(): Promise<string> {\n return SITE_URL;\n}\n' }, { "path": "lib/cimplify-loader.ts", "kind": "text", "content": 'import type { ImageLoader } from "next/image";\n\nimport { assetUrl, isCimplifyAsset } from "@cimplify/sdk";\n\nconst cdnBase = process.env.NEXT_PUBLIC_CIMPLIFY_CDN_URL?.trim() || undefined;\n\nconst cimplifyImageLoader: ImageLoader = ({ src, width, quality }) => {\n if (isCimplifyAsset(src, cdnBase)) {\n return assetUrl(src, {\n base: cdnBase,\n w: width,\n quality,\n format: "auto",\n });\n }\n return src;\n};\n\nexport default cimplifyImageLoader;\n' }, { "path": "lib/cart.ts", "kind": "text", "content": '"use client";\n\nimport { useCart } from "@cimplify/sdk/react";\n\n/**\n * Reactive cart count for the header pill. Subscribes to the SDK cart\n * state \u2014 updates immediately on add / remove / quantity change.\n */\nexport function useCartCount(): { count: number } {\n const { itemCount } = useCart();\n return { count: itemCount };\n}\n' }, { "path": ".gitignore", "kind": "text", "content": "node_modules\n.next\n.open-next\nout\n.env\n.env.local\n.env*.local\n.DS_Store\n*.tsbuildinfo\nnext-env.d.ts\n" }, { "path": "package.json", "kind": "text", "content": '{\n "name": "__STOREFRONT_NAME__",\n "private": true,\n "version": "0.0.0",\n "scripts": {\n "dev": "concurrently -k -n mock,next -c blue,magenta \\"cimplify-mock --seed restaurant --quiet\\" \\"next dev\\"",\n "dev:storefront": "next dev",\n "dev:mock": "cimplify-mock --seed restaurant",\n "build": "next build",\n "start": "next start",\n "typecheck": "tsc --noEmit",\n "test": "vitest",\n "test:run": "vitest run",\n "check:brand": "vitest run __tests__/brand.test.ts",\n "check:cart": "vitest run __tests__/cart-flow.test.ts",\n "check:contract": "vitest run __tests__/contract.test.ts",\n "check": "bun run typecheck && bun run test:run"\n },\n "dependencies": {\n "@cimplify/sdk": "^0.57.0",\n "next": "^16.2.6",\n "react": "^19.0.0",\n "react-dom": "^19.0.0"\n },\n "devDependencies": {\n "@tailwindcss/postcss": "^4.2.4",\n "@types/node": "^22.10.0",\n "@types/react": "^19.0.0",\n "@types/react-dom": "^19.0.0",\n "concurrently": "^9.0.0",\n "tailwindcss": "^4.2.4",\n "typescript": "^5.9.3",\n "vitest": "^4.1.5"\n }\n}\n' }, { "path": "bun.lock", "kind": "binary", "content": "ewogICJsb2NrZmlsZVZlcnNpb24iOiAxLAogICJjb25maWdWZXJzaW9uIjogMSwKICAid29ya3NwYWNlcyI6IHsKICAgICIiOiB7CiAgICAgICJuYW1lIjogIl9fU1RPUkVGUk9OVF9OQU1FX18iLAogICAgICAiZGVwZW5kZW5jaWVzIjogewogICAgICAgICJAY2ltcGxpZnkvc2RrIjogIl4wLjU0LjAiLAogICAgICAgICJuZXh0IjogIl4xNi4yLjYiLAogICAgICAgICJyZWFjdCI6ICJeMTkuMC4wIiwKICAgICAgICAicmVhY3QtZG9tIjogIl4xOS4wLjAiLAogICAgICB9LAogICAgICAiZGV2RGVwZW5kZW5jaWVzIjogewogICAgICAgICJAdGFpbHdpbmRjc3MvcG9zdGNzcyI6ICJeNC4yLjQiLAogICAgICAgICJAdHlwZXMvbm9kZSI6ICJeMjIuMTAuMCIsCiAgICAgICAgIkB0eXBlcy9yZWFjdCI6ICJeMTkuMC4wIiwKICAgICAgICAiQHR5cGVzL3JlYWN0LWRvbSI6ICJeMTkuMC4wIiwKICAgICAgICAiY29uY3VycmVudGx5IjogIl45LjAuMCIsCiAgICAgICAgInRhaWx3aW5kY3NzIjogIl40LjIuNCIsCiAgICAgICAgInR5cGVzY3JpcHQiOiAiXjUuOS4zIiwKICAgICAgICAidml0ZXN0IjogIl40LjEuNSIsCiAgICAgIH0sCiAgICB9LAogIH0sCiAgInBhY2thZ2VzIjogewogICAgIkBhbGxvYy9xdWljay1scnUiOiBbIkBhbGxvYy9xdWljay1scnVANS4yLjAiLCAiIiwge30sICJzaGE1MTItVXJjQUJCKzRiVXJGQUJ3Ymx1VElCRXJYd3Zic1UvVjdUWldmbWJnSmZia3dpQnV6aVM5Z3hkT0RVeXVpZWNmZEdRODVqZ2xNVzZqdVMzK3o1VHNLTHc9PSJdLAoKICAgICJAYmFiZWwvcnVudGltZSI6IFsiQGJhYmVsL3J1bnRpbWVANy4yOS4yIiwgIiIsIHt9LCAic2hhNTEyLUppRFNoSDQ1ektIV3lHZTRaTlZSckNqQno4Tmg5VE1tWkcxa2g0UVRLOGhDQlRXQmk4RGEraTdzMWZKdzcvbFlwTTRjY2VwU05mcXpaL1F2QUJCaTVnPT0iXSwKCiAgICAiQGJhc2UtdWkvcmVhY3QiOiBbIkBiYXNlLXVpL3JlYWN0QDEuNS4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBiYWJlbC9ydW50aW1lIjogIl43LjI5LjIiLCAiQGJhc2UtdWkvdXRpbHMiOiAiMC4yLjkiLCAiQGZsb2F0aW5nLXVpL3JlYWN0LWRvbSI6ICJeMi4xLjgiLCAiQGZsb2F0aW5nLXVpL3V0aWxzIjogIl4wLjIuMTEiLCAidXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUiOiAiXjEuNi4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBkYXRlLWZucy90eiI6ICJeMS4yLjAiLCAiQHR5cGVzL3JlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgImRhdGUtZm5zIjogIl40LjAuMCIsICJyZWFjdCI6ICJeMTcgfHwgXjE4IHx8IF4xOSIsICJyZWFjdC1kb20iOiAiXjE3IHx8IF4xOCB8fCBeMTkiIH0sICJvcHRpb25hbFBlZXJzIjogWyJAZGF0ZS1mbnMvdHoiLCAiQHR5cGVzL3JlYWN0IiwgImRhdGUtZm5zIl0gfSwgInNoYTUxMi16MWdTQWxjZWQxeVkraU0rbUhERXRJa0Q4VUkzRWJzNTJNdUJQeHZWNmY1aFJ1dGsreHZDSC93dUI3aERxRHpLOUpHNUZvTXo1bmhycXRTczF3anQxQT09Il0sCgogICAgIkBiYXNlLXVpL3V0aWxzIjogWyJAYmFzZS11aS91dGlsc0AwLjIuOSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYmFiZWwvcnVudGltZSI6ICJeNy4yOS4yIiwgIkBmbG9hdGluZy11aS91dGlscyI6ICJeMC4yLjExIiwgInJlc2VsZWN0IjogIl41LjEuMSIsICJ1c2Utc3luYy1leHRlcm5hbC1zdG9yZSI6ICJeMS42LjAiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL3JlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgInJlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgInJlYWN0LWRvbSI6ICJeMTcgfHwgXjE4IHx8IF4xOSIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkB0eXBlcy9yZWFjdCJdIH0sICJzaGE1MTIteC9QRERDWXpvcVBwanJkeWIzVmN5eWxUSTJJalVYRXRZREdpNWZvaDdLc25tTkpJSWFWd0EyR0xnREgxZHBzMUdnWGlKYkE2MGhNK0F5dVRmUXpJdnc9PSJdLAoKICAgICJAY2ltcGxpZnkvc2RrIjogWyJAY2ltcGxpZnkvc2RrQDAuNTQuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYmFzZS11aS9yZWFjdCI6ICJeMS40LjEiLCAiY2xzeCI6ICJeMi4xLjEiLCAiZGF0ZS1mbnMiOiAiXjQuMS4wIiwgImxpYnBob25lbnVtYmVyLWpzIjogIjEuMTIuNDEiLCAicmVhY3QtZGF5LXBpY2tlciI6ICJeOS4xNC4wIiwgInRhaWx3aW5kLW1lcmdlIjogIl4zLjUuMCIsICJ6b2QiOiAiXjQuNC4zIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBwYXlzdGFjay9pbmxpbmUtanMiOiAiXjIuMjIuOCIsICJtc3ciOiAiPj0yLjAuMCIsICJyZWFjdCI6ICI+PTE3LjAuMCIsICJ2aXRlc3QiOiAiPj0yLjAuMCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkBwYXlzdGFjay9pbmxpbmUtanMiLCAibXN3IiwgInJlYWN0IiwgInZpdGVzdCJdLCAiYmluIjogeyAiY2ltcGxpZnktbW9jayI6ICJkaXN0L21vY2svY2xpLm1qcyIgfSB9LCAic2hhNTEyLVlVTi9sT3FWaUhjaTF2OVVTV1d3QVd0eTI5cEVYQmRMVHVLYXJTbDhFcGFmV2g1amtkR1oxUStOZTkvYmZnVFptUjhpVFVsdEE4VTdnbFYyRm9SU2dnPT0iXSwKCiAgICAiQGRhdGUtZm5zL3R6IjogWyJAZGF0ZS1mbnMvdHpAMS40LjEiLCAiIiwge30sICJzaGE1MTItUDVMVU5odGJqNllmSTNpSmp3NUVMOWVVQUc2T2l0RDBXM2ZXUWNwUWpEUmMvUUlzTDB0Uk51TzFQY0R2UGNjV0wxZlNUWFhkRTFkcytsOTVEVi9PRkE9PSJdLAoKICAgICJAZW1uYXBpL2NvcmUiOiBbIkBlbW5hcGkvY29yZUAxLjEwLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGVtbmFwaS93YXNpLXRocmVhZHMiOiAiMS4yLjEiLCAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTIteXE2T2tKNHA4MkNBZlBsMHU5bVFlYlFIS1BKa1k3V3JJdWsyMDVjVFluWWUrazJaOFlCaDExRnJiUkcvSDZpaGlycWNhY09nbDJCSU84b3lNUUxlWHc9PSJdLAoKICAgICJAZW1uYXBpL3J1bnRpbWUiOiBbIkBlbW5hcGkvcnVudGltZUAxLjEwLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTItZXd2WWxrODZ4VW9HSTB6UVJOcS9tQysxNlIxUWVEbEtReTIxS2kzb1NZWE5nTGI0NUdWMVA2QTBNKy9zNm55Q3VORHFlNVZwYVk4NEJ6WEd3VmJ3RkE9PSJdLAoKICAgICJAZW1uYXBpL3dhc2ktdGhyZWFkcyI6IFsiQGVtbmFwaS93YXNpLXRocmVhZHNAMS4yLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTItdVRJSTdPWUYrL01lcy9NcmNJT1lwNXlPdFNNTEJXU0lvTFBwY2d3aXBvaUtibGk2azMyMnRjb0ZzeG9JSXhQRHFXMDFTUUdBZ2tvNEV6WmkyQk52Mnc9PSJdLAoKICAgICJAZXNidWlsZC9haXgtcHBjNjQiOiBbIkBlc2J1aWxkL2FpeC1wcGM2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYWl4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi0xVkNJQ1d5cGVRS2hWYkU5b1cvc0phQW1qTHhoVnFhY2RrdlBMRWp3bHR0amZ3RU5SU0NsUzhFakJ6MEt6UnlGU0NQRElrdVhXMzRKZS92azd6ZEI3UT09Il0sCgogICAgIkBlc2J1aWxkL2FuZHJvaWQtYXJtIjogWyJAZXNidWlsZC9hbmRyb2lkLWFybUAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtIiB9LCAic2hhNTEyLVFOZFFFcHM3RGZGd0UzaFhpVTRCWmVPVjY4SEh6WXdHZDBOdGhoZDN1Q2trRUtLNy9SNk1UZ00wUDdIN0ZBczVwVS9ESVdzdmlNbUVHeEVveElaK1pRPT0iXSwKCiAgICAiQGVzYnVpbGQvYW5kcm9pZC1hcm02NCI6IFsiQGVzYnVpbGQvYW5kcm9pZC1hcm02NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItYkJ5NjlwZ2ZoTUd0Q253cEMveDVRaGZ4QXovY0JnUTllbmJ0d2pmNlY5bG5QSS9oTXlUOWlXcFIxYXJtMGwza3R0VHI0TDBLU0xwS21McC9pbEtTOUE9PSJdLAoKICAgICJAZXNidWlsZC9hbmRyb2lkLXg2NCI6IFsiQGVzYnVpbGQvYW5kcm9pZC14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImFuZHJvaWQiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1UVmhkVnRRSUZ1VnBJSVIyODJidGNHQzJvR1FvU2ZaZm1CZFRpcDJhbkNhVlljcVdsWlhHY2RjS0lVa2xmWDJ3ajBKa2xOWWd6MzlPQnFoMmNxWHZjUT09Il0sCgogICAgIkBlc2J1aWxkL2Rhcndpbi1hcm02NCI6IFsiQGVzYnVpbGQvZGFyd2luLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVkxZ2lDZk00bmxIRFdFZlNja016ZVdOZFFTMzFCUUdzOS9yb3V3NlViOTF0a0s3OWFJTVRIM3E5eEh2ekg4ZDB3RHJ1NUNpMGtXQjhiM3VwL25sMTZnPT0iXSwKCiAgICAiQGVzYnVpbGQvZGFyd2luLXg2NCI6IFsiQGVzYnVpbGQvZGFyd2luLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiZGFyd2luIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItQ0pzcnk4WkdNNVZGVmV5VVlCM2NkS3BkL0g2OVBZZXo0ZUpoMVcvdDM4dnp1dGRqRWp0UDdoQjZlTEtCb09keGNBbEN0RVlIelEvUEovb1U5STR1MEE9PSJdLAoKICAgICJAZXNidWlsZC9mcmVlYnNkLWFybTY0IjogWyJAZXNidWlsZC9mcmVlYnNkLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi15WXErMzlObFRSelUyWG1vUFc0bDVJZnBsOWZxU2swbkFKWU0vVi9XVUdQRUZmZWsxZXBMSEpJa1RRTTZiQnMxc3dBcGpPNW5XZ3ZyODQzZzZUanh1UT09Il0sCgogICAgIkBlc2J1aWxkL2ZyZWVic2QteDY0IjogWyJAZXNidWlsZC9mcmVlYnNkLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiZnJlZWJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLTBGZ3ZPSjZVVU1mbHNIU1BMemRmRG5uQkJWb0NEdEJUVnluL01yV2xvVU52cS81U0ZtaDEzbDNkdmdSUGtEaWhSeGI3N1kxN01icWJDQWEyc3RyTVFRPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtYXJtIjogWyJAZXNidWlsZC9saW51eC1hcm1AMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTIta3JvNGMwUDg1R01mRllxVzRUV09wdm1GOHJGU2hiV0duckxxbHpwNFgxVE5XalJZM0pNWVVmREN0T3hQS09JWThCMFdDOEhONTFoR1A0STRoejRBYVE9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1hcm02NCI6IFsiQGVzYnVpbGQvbGludXgtYXJtNjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi0rODlVc1FUZlhkbWpJdlpTNm5Vbk9PTG9YbmtVVEI5aFI1UUFlTHJRZHpPU1dadk5TQVhBdGNSREhXdHFBVXRBbXY3Wk0xV1BPT2VTeER6enpNb2dpUT09Il0sCgogICAgIkBlc2J1aWxkL2xpbnV4LWlhMzIiOiBbIkBlc2J1aWxkL2xpbnV4LWlhMzJAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJpYTMyIiB9LCAic2hhNTEyLXlURWpvYXB5OFVQM3J2OGRCMGlwM0FmTXBSYnloU04zK2hZOG1vL2k0UVhGZUR4bWlZYkVLcDNaUmpCS2NPUDg2MlVhNGIxUERmd2x2YnV3WTdoSUdRPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtbG9vbmc2NCI6IFsiQGVzYnVpbGQvbGludXgtbG9vbmc2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItTmVxcVlrcmNHekZ3aTZDR1JHTk1PaldHR1NZT3Bxd0NqUzlmdmFVbFg1czN6d090bjFxd2cxczJpRTJzdkJlNFEvWU9HMXE2ODc1bGNBb1FLL0Y0VkE9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1taXBzNjRlbCI6IFsiQGVzYnVpbGQvbGludXgtbWlwczY0ZWxAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJub25lIiB9LCAic2hhNTEyLUljdlRsRjlkdExyZkwvTThXZ05JL3FKWUJFTlAzZWtnc0hiWVVJekV6cTVYSnp6VkVWL2ZYWTlXRlBmRUVYbXUzY2sycUpQOExHL3AzUThmN1pjMlhnPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtcHBjNjQiOiBbIkBlc2J1aWxkL2xpbnV4LXBwYzY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAicHBjNjQiIH0sICJzaGE1MTItSE95MGFMVEpUVnRvVGVHWmg0SFNYYU82TTk1cXU0azVsSmNINGd4djU2aWF5Y2Z6MVM4R08vNUpoNlg0WTFZaUkwaDdjUnlMaStIaXhNUis4OHN3YWc9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1yaXNjdjY0IjogWyJAZXNidWlsZC9saW51eC1yaXNjdjY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1pOEpVREF1ZnB6OWpPem80eUlTaENUY1h6UzA3dkVnV3p5WDNOSDJHN0xFRlZnckxFaGp3TDNhakZFNGZaSTNJNFpnaU03SkgzR1E3UmVPYlJPdlNVQT09Il0sCgogICAgIkBlc2J1aWxkL2xpbnV4LXMzOTB4IjogWyJAZXNidWlsZC9saW51eC1zMzkweEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogInMzOTB4IiB9LCAic2hhNTEyLWpGbnUrNlViTGx6SWpQUXBXQ05oNVF0cmNOZk1MamdJYXZud1BRQWZvR3g0cTE3b2NPVTlNc1EyUVZ2Rnh3UW9XcFpUOER2VExvb1R2bU9RWGtPNTFnPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgteDY0IjogWyJAZXNidWlsZC9saW51eC14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItNmUwY3ZYd3pPblZXSkhxK21za1A4RE5TcktCcjFiVUxCdm5GTHBjMUtZK2QraXJaU2daMDJUR3NlNUZzYWZLUzVqZzJlNHBidks2VFBYYUYvQTYrQ0E9PSJdLAoKICAgICJAZXNidWlsZC9uZXRic2QtYXJtNjQiOiBbIkBlc2J1aWxkL25ldGJzZC1hcm02NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibm9uZSIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItdlVua0JZeFpXNGhML2llOTFoU3FhU05qdWxPbllYRTFWU0x1c252SGcydTNqZXdKQnozWXpCOStvQ3c4REFCZVZxWkdnOTR0OXR5WkZvSG1hOGdXWlE9PSJdLAoKICAgICJAZXNidWlsZC9uZXRic2QteDY0IjogWyJAZXNidWlsZC9uZXRic2QteDY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJub25lIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItWEFnOHBJUW41Q3poT0I4b2RJY0FtNDJRc09mYTk4U0JlS1VkbzR4YThPdlg4TGJNWnFFdGdlV0U5UC9XeHQ3TWxHMlFxdmpHdGhzK25xNDhUclVpS3c9PSJdLAoKICAgICJAZXNidWlsZC9vcGVuYnNkLWFybTY0IjogWyJAZXNidWlsZC9vcGVuYnNkLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJvcGVuYnNkIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1DdDJXY0ZFQU5sRkR0cDFuVkFYU05CUER4eVUrajcrdElkLy9pSFhVMmYvbE41QW1PNHpMeWhEY3BSNUN6MXIwOG1WeHp0M0pweXQ0UG1YUTFPNis3QT09Il0sCgogICAgIkBlc2J1aWxkL29wZW5ic2QteDY0IjogWyJAZXNidWlsZC9vcGVuYnNkLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAib3BlbmJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLXhBR0doeU9ROU90bTFYdThOVDFpZkdMbkE2TTNzSnhaNml4eWxiK3ZJVVZ6dnZkNkdPQUxwd1FyWXJ0bFBvdU1xZC92U2JnZWh6NkhhVms0KzdBZmh3PT0iXSwKCiAgICAiQGVzYnVpbGQvc3Vub3MteDY0IjogWyJAZXNidWlsZC9zdW5vcy14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogInN1bm9zIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItTXcrdHp5NHBwNndaRUswK0x3cjc2cFdManJ0am1KeVVCMjN0SEtxRURQNzRSM3E5NWx1WS9iWHFYWmVZbDROWWx2d09xb1JLbEluUWlhbGdDS3k2N1E9PSJdLAoKICAgICJAZXNidWlsZC93aW4zMi1hcm02NCI6IFsiQGVzYnVpbGQvd2luMzItYXJtNjRAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1BVlVQNDI4VlFUU2RkZ3V6OWRPOW5nYitFNWFTY3lnN25PZUpEckYxSFBZdTU1NWdtemEzYkRHTVBobVZYTDhzdkRTb3FQQ3NDUGpiMjY1eUcva0xLUT09Il0sCgogICAgIkBlc2J1aWxkL3dpbjMyLWlhMzIiOiBbIkBlc2J1aWxkL3dpbjMyLWlhMzJAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJpYTMyIiB9LCAic2hhNTEyLWkxc1crMWkrb1d2UXpTZ2ZSY3h4RzJrNEk5bjNPOU5ScXk4VSt1dWdhVDJEeTdrTE85WTd3STcyaGFPYWh4Y2VNWDhoWkF6Z0dvdTFGaG5kUmxkeFJnPT0iXSwKCiAgICAiQGVzYnVpbGQvd2luMzIteDY0IjogWyJAZXNidWlsZC93aW4zMi14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItbk9UMnZaTnc2aEorejQzb1AxU1BlYS9HLzZBYk42WCtiR05oTnVxOE50Ukh5NHdzTWh3NzY1SUtMTm1uamVrN0d2aldCWVE4UTVWQm9ZVEZnOXkxVVE9PSJdLAoKICAgICJAZmxvYXRpbmctdWkvY29yZSI6IFsiQGZsb2F0aW5nLXVpL2NvcmVAMS43LjUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGZsb2F0aW5nLXVpL3V0aWxzIjogIl4wLjIuMTEiIH0gfSwgInNoYTUxMi0xSWg0V1RXeXcwK2xLeUZNY0JIR2JiNVU1RnR1SEp1dWpveXlyNXpUYVdTNUVZTWVUNkpiMkF1RGVmdHNDc0V1Y2hPK21NMmlqNStxOWNyaHlkekxoUT09Il0sCgogICAgIkBmbG9hdGluZy11aS9kb20iOiBbIkBmbG9hdGluZy11aS9kb21AMS43LjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGZsb2F0aW5nLXVpL2NvcmUiOiAiXjEuNy41IiwgIkBmbG9hdGluZy11aS91dGlscyI6ICJeMC4yLjExIiB9IH0sICJzaGE1MTItOWdaU0FJNVhNMzY4ODBQUE1tLy85ZGZpRW5nWW9DNkFtMml6RVMxRkY0MDZZRnNqdnlCTW1lSjJnNFNBanUzeFd3dHV5bk5SRkwyczloZ3hwTEk1U1E9PSJdLAoKICAgICJAZmxvYXRpbmctdWkvcmVhY3QtZG9tIjogWyJAZmxvYXRpbmctdWkvcmVhY3QtZG9tQDIuMS44IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBmbG9hdGluZy11aS9kb20iOiAiXjEuNy42IiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgInJlYWN0IjogIj49MTYuOC4wIiwgInJlYWN0LWRvbSI6ICI+PTE2LjguMCIgfSB9LCAic2hhNTEyLWNDNTJiSHdNL24vQ3hTODdGSDB5V2RuZ0VacmpkdExXL3FWcnVvNjhxZytwcks3WlE0WUdkdXQyR3lEVnBvR2VBWWUvaDg5OXJWZU9WbTZPaTQwazJBPT0iXSwKCiAgICAiQGZsb2F0aW5nLXVpL3V0aWxzIjogWyJAZmxvYXRpbmctdWkvdXRpbHNAMC4yLjExIiwgIiIsIHt9LCAic2hhNTEyLVJpQi95SWg3OHBjSXhsNmxMTUcwQ2dCWEFaMlkwZVZIcU1QWXVndSs5VTBBZVQ2WUJlaUpwZjdsYmRKTkl1Z0ZQNVNJandOUmdvNERoUjFReGkyNkdnPT0iXSwKCiAgICAiQGltZy9jb2xvdXIiOiBbIkBpbWcvY29sb3VyQDEuMS4wIiwgIiIsIHt9LCAic2hhNTEyLVRkNzZxN2o1N28vdExWZGdTNzQ2Y1lBUmZTeXhrOGlFZlJ4ZXdMOWg0T016WWhiVzRUQWNwcGwwbVQ0ZXlxWGRkaDZML2p3b003NW1vN2l4YS9wQ2VRPT0iXSwKCiAgICAiQGltZy9zaGFycC1kYXJ3aW4tYXJtNjQiOiBbIkBpbWcvc2hhcnAtZGFyd2luLWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiAiMS4yLjQiIH0sICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLWltdFEzV01KWGJNWTRmeGIvTmRwNkhCVE5WdFdDVUkwV2RvYnloZUdmNSthZDZ4WDhWSURPOHUyeEU0cWMvZnIwOENLRy83ZERzZUZ0bjZNNmcvcjN3PT0iXSwKCiAgICAiQGltZy9zaGFycC1kYXJ3aW4teDY0IjogWyJAaW1nL3NoYXJwLWRhcndpbi14NjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWRhcndpbi14NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1ZTkVGQUYvNEtRL1BlVzBOK3IrYVZWc29JWTAvcXh4aWtGMlNXZHArTlJrbU1CN3k5TEJaQVZxUTR5aEdDbS9IM0gyNzBPU3lrcW1RTUtMQmhCSkRFdz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjRAMS4yLjQiLCAiIiwgeyAib3MiOiAiZGFyd2luIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi16cWpqbzdSYXRGZkZvUDBNa1E1MWpmdUZaQm5WRTJwUmlheWRLSjFHL3JIWnZuc3JIQU9jUUFMSWk5c0E1Y281eGVuUWRUdWdDdnRiMWN1Zjc4VmY0Zz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4teDY0IjogWyJAaW1nL3NoYXJwLWxpYnZpcHMtZGFyd2luLXg2NEAxLjIuNCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi0xSU9kNXhmVmhsR3dYK3pYdjJOOTNrMHlNT052VWxBTnlsYkp3MWVUYWg4Sy9KdHBpMTVLQytXU2lhWC9uQm1ibTJIeFJNMWdaMG5TZGpTc3JaYkdLZz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm0iOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm1AMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybSIgfSwgInNoYTUxMi1iRkk3eGNLRkVMZGlOQ1ZvdjhlNDRJYTR1MmJ5QStsM1h0c0FqK1E4dGZDd082QlE4aURvallkdm9QTXFzS0RrdW9PbytYNkhaQTBzMHExMUFOTVE4QT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm02NCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybTY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1leGNqWDhEZnNJY0oxMHgxS3pyNFJjV2UxZWRDOVBxdURSUlB4M1lWQ3ZRditVNXA3WWluMnMzMmZ0emlrWG9qYjFQSUZjLzlNdDI4L3kraVJrbGtydz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1wcGM2NCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi1GTXV2R2lqTERZRzZsVytiL1V2eWlsVVd1NUF5dSszcjJkMVM4bm90aUdDSXlZVS83NmVpZzFVZk1ta1o3dndnT3J6S3psUWJGU3VRZmdtN0dZVVBwQT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1yaXNjdjY0IjogWyJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgtcmlzY3Y2NEAxLjIuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1vVkRiY1I0elVDMGNlODJ0ZXViU20reDZFVGl4dEtaQmgvcWJSRUlPY0kzY1VMekR5YjE4U3IvV2N5eDdOUlFlUXpPaUhUTmJaRkYxVXdQUzJzY3lHQT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1zMzkweCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXMzOTB4QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJzMzkweCIgfSwgInNoYTUxMi1xbXA5VnJ6Z1BnTW9HWnlQdnJRSHFrMDJ1eWpBMC9RclRPMjZUcWs2bDRaVjBNUFdJVzZMVGtxT0lvditKMXlFdTdNYkZRYURwd2R3SktoYkp2dVJ4UT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjRAMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi10SnhpaUxzbUhjOUF4MWJ6M29hT1lCVVJUWEdJUkRPREJxaHZlVkhvbnJISjkvK2s4OXFiTGwwYmNKbnMrZTR0NHJ2YU5CeGFFWnNGdFNmQWRxdVBydz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjRAMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLUZWUUh1d3gxSUl1Tm93OVFBYllVekorRW44S2NWbTlMazUrdUdVUUpIYVptTUVDWm1PbGl4OUhuSDduMVRSa1hNUzBwR3hJSm9rSVZCOVN1cVpHR1h3PT0iXSwKCiAgICAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4bXVzbC14NjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wteDY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItK0xweUJrN0w0NFpJWHd6L1ZZZmdsYVgvb2t4ZXpFU2M2VXhEU295bzJLczZKeGM0WTdzR2pwZ1U5czRQTWdxZ2pqMWdaQ3lsVGllTmFtcUExTUY3RGc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4LWFybSI6IFsiQGltZy9zaGFycC1saW51eC1hcm1AMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybSI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItOWRMcXN2d3RnMXV1WEJHWktzeGVtOTU5NSt1anYwc0o2Vmk4d2NUQU5TRnB3Vi9HT05hdDVlQ2t6UW8vMU82elJJa2gwbS84KzVCanJScjdqRFVTWnc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4LWFybTY0IjogWyJAaW1nL3NoYXJwLWxpbnV4LWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm02NCI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1iS1F6YUpSWS9ia1BPWHlLeDVFVnVwN3FrYW9qRUNHNk5MWXN3Z2t0T1pqYVhlY1NBZUNXaVp3d2lGZjMvWStPMUhyYXVpRTNGVnNHeEZnOGMyNHJaZz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGludXgtcHBjNjQiOiBbIkBpbWcvc2hhcnAtbGludXgtcHBjNjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0IjogIjEuMi40IiB9LCAib3MiOiAibGludXgiLCAiY3B1IjogInBwYzY0IiB9LCAic2hhNTEyLTd6em53TmFxVzZZdHNmckdHREE2QlJrSVNLQUFFMUpvMFFkcE5ZWE5NSHUyKzBkVHJQZmxUTE5rcGM4bDdNVVA1TTE2WkpjVXZ5c1ZXV3JNZWZacXVBPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eC1yaXNjdjY0IjogWyJAaW1nL3NoYXJwLWxpbnV4LXJpc2N2NjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXJpc2N2NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi01MWdKdUxQVEthN3BpWVBhVnM4R21CeW83L1U3LzdUWk9xK2NuWEpJSFpLYXZJUkhBUDc3ZTNOMkhFbDNkZ2lxZEQvdzB5VWZpSm5JSTc3UHVEREZkdz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGludXgtczM5MHgiOiBbIkBpbWcvc2hhcnAtbGludXgtczM5MHhAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXMzOTB4IjogIjEuMi40IiB9LCAib3MiOiAibGludXgiLCAiY3B1IjogInMzOTB4IiB9LCAic2hhNTEyLW5RdENrMFBkS2ZobzNlQzVNcmJRb2lnSjJnZDFDZ2RkVU1rYWJVaityQmV2czh0WjJjVUxPeDQ2RTdveVgrMDRXR2ZBQmdJd21NQzBWcWllVGlSNGpnPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eC14NjQiOiBbIkBpbWcvc2hhcnAtbGludXgteDY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLU1FemQ4SFBLeFZ4VmVud0FhK0pSUHdFQzdRRmpvUFd1UzVOWm5CdDZCM3B1N0VHMkdlMGlkMW9MSFpwUEpkbjNPUUsrQlFEaXc5elN0aUhCVEpRUVFRPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eG11c2wtYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGludXhtdXNsLWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItZnBySlI2R3RSc010Nkt5ZnE0NElzQ2hWWmVHTjk3Z1REMzMxd2VSMWV4MWMxcnlwREVBQk42VG0yeGExd0U2bFliNURkRW5rMDNOWlBxQTdJZDIxeWc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4bXVzbC14NjQiOiBbIkBpbWcvc2hhcnAtbGludXhtdXNsLXg2NEAwLjM0LjUiLCAiIiwgeyAib3B0aW9uYWxEZXBlbmRlbmNpZXMiOiB7ICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXhtdXNsLXg2NCI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSmc4d05UMU1Vekl2aEJGeFZpcXJFaFdER3pxeW1vM3NWN3o3WnNhV2JaTkRMWFJKWm9SR3JqdWxwNjBZWXRWNHdmWThWSUtjV2lkam9qbExjV3JkOFE9PSJdLAoKICAgICJAaW1nL3NoYXJwLXdhc20zMiI6IFsiQGltZy9zaGFycC13YXNtMzJAMC4zNC41IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvcnVudGltZSI6ICJeMS43LjAiIH0sICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1PZFdURWlWa1kyUEh3cWtiQkk4ZnJGeFFRRmVrSGFTU2tVSUprd3pjbFdaZTY0TzFYNFVsVWpxcXFMYVBiVXBNT1FrNkZCdS9IdGxHWE5ibElzMGh1dz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzItYXJtNjQiOiBbIkBpbWcvc2hhcnAtd2luMzItYXJtNjRAMC4zNC41IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1XUTNBZ1dDV1lTYjJ5dCtJRzhtbkM2SmRrOVdoczdPMGd4cGhibHNMdmRoU3BTVHRtdTY5WkcxR2tiNk51dnhzTkFDd2lQVjZjTlNaTnp0MEtQc3c3Zz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzItaWEzMiI6IFsiQGltZy9zaGFycC13aW4zMi1pYTMyQDAuMzQuNSIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAiaWEzMiIgfSwgInNoYTUxMi1GVjltLzdObWVDbVNIREQ1ajQrNHBOSThDcDNhVytKdkxvWGNUVW8wSXF5alNmQVpKOGRJVW1pangxcWFKc0lpVStIb3N3NnhNNUtpakFXUkpDU2dOZz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzIteDY0IjogWyJAaW1nL3NoYXJwLXdpbjMyLXg2NEAwLjM0LjUiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi0rMjlZTXNxWTIvOWVGRWlXOTNlcVdudUxjV2N1Zm93WGV3d1NOSVQ2VXdaZFVVQ3JNM29Gak1XSC9aNi9UTW1iNGhsRmVubWZBVmJwV2V1cDJqcnlDdz09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogWyJAanJpZGdld2VsbC9nZW4tbWFwcGluZ0AwLjMuMTMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjIjogIl4xLjUuMCIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjQiIH0gfSwgInNoYTUxMi0ya2t0LzduaUo2TWdFUHhGMGJZZFE2ZXRaYUErZlF2RGNMS2NraHkxeUlRT3phb0tqQkJqU2o2My9hTFZqWUUzcWhSdDVkdk0rdVV5ZkNnNlVLQ0JiQT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3JlbWFwcGluZyI6IFsiQGpyaWRnZXdlbGwvcmVtYXBwaW5nQDIuMy41IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogIl4wLjMuNSIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjQiIH0gfSwgInNoYTUxMi1MSTl1LytsYVlHNERzMVRES1NKVzJZUHJJbGNWWU93aTJmVUM2eEI0M2x1ZUNqZ3hWNGxmZk9DWkN0WUZpSDZUTk9YK3RRS1h4OTdUNElLSGJoeUhFUT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3Jlc29sdmUtdXJpIjogWyJAanJpZGdld2VsbC9yZXNvbHZlLXVyaUAzLjEuMiIsICIiLCB7fSwgInNoYTUxMi1iUklTZ0NJalAyMC90YldTUFdNRWk1NFFWUFJaRXhrdUQ5bEpMK1VJeFVLdHdWSkE4d1cxVHJiMWpNczFSRlhvMUNCVE5aLzVocEM5UXZtS1dkb3BLdz09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3NvdXJjZS1tYXAiOiBbIkBqcmlkZ2V3ZWxsL3NvdXJjZS1tYXBAMC4zLjExIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogIl4wLjMuNSIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjUiIH0gfSwgInNoYTUxMi1aTXAxVjhaRmNQRzVkSVduUUxyM05TSTFNaUNVN1VFVGRTL0EwRzhWL1hXSHZKdjNac0ZxdXRKbjFZNVJQbUFQWDZGM0JpRTM5N09xdmVVLzlOQ3VJQT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3NvdXJjZW1hcC1jb2RlYyI6IFsiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjQDEuNS41IiwgIiIsIHt9LCAic2hhNTEyLWNZUTkzMTBncnF4dWVXYmwrV3VJVUlhaVVhRGNqN1dPcTVmVmhFbGpOVmdSZk9VaFk5ZnkyelR2Zm9xV3NuZWJoOFNsNzBWU2NGYklDdkpuTEtCME9nPT0iXSwKCiAgICAiQGpyaWRnZXdlbGwvdHJhY2UtbWFwcGluZyI6IFsiQGpyaWRnZXdlbGwvdHJhY2UtbWFwcGluZ0AwLjMuMzEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvcmVzb2x2ZS11cmkiOiAiXjMuMS4wIiwgIkBqcmlkZ2V3ZWxsL3NvdXJjZW1hcC1jb2RlYyI6ICJeMS40LjE0IiB9IH0sICJzaGE1MTItenpOUitTZFFTREp6Yzhqb2FlUDhRUW9DUXI4TnVZeDJkSUl5dGwxUWVCRVpISjl1VzZoZWJzcllnYno4aEp3VVFhbzNUV0NNdG1mVjhOdTF0d09MQXc9PSJdLAoKICAgICJAbmFwaS1ycy93YXNtLXJ1bnRpbWUiOiBbIkBuYXBpLXJzL3dhc20tcnVudGltZUAxLjEuNCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAdHlieXMvd2FzbS11dGlsIjogIl4wLjEwLjEiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQGVtbmFwaS9jb3JlIjogIl4xLjcuMSIsICJAZW1uYXBpL3J1bnRpbWUiOiAiXjEuNy4xIiB9IH0sICJzaGE1MTItM05RTk5nQTFZU2xKYi9rTUgxaWxkQVNQOUhXNy83a1luUkkyc3pXSmFvZmFTMWhXbWJHSTRIK2QzKzIyYUd6WFhOOUlKK24rR2lGVmNHaXBKUDE4b3c9PSJdLAoKICAgICJAbmV4dC9lbnYiOiBbIkBuZXh0L2VudkAxNi4yLjYiLCAiIiwge30sICJzaGE1MTItZ2Q4SG9ITjR1Zmo3M1dtUjNKbVZvbHJwSlI0N0lMSzZMb3VQNXhFbFBnbGFWeGlyNmUxYTdWenZUdkRXa09vUFhUOXJra1R6eUN4QnU0eWVaZlp3Y3c9PSJdLAoKICAgICJAbmV4dC9zd2MtZGFyd2luLWFybTY0IjogWyJAbmV4dC9zd2MtZGFyd2luLWFybTY0QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVpKR2trY05mWWdyck1rcU9kWjd6b0xhMVRPeTBxcGNNZmsvejRNaC9GS1V6NDBnVk8rSE5RV3FtTHhmNjdaNVdCNjREUnAwZGhFYnlIZmVsKzZzSlVnPT0iXSwKCiAgICAiQG5leHQvc3djLWRhcndpbi14NjQiOiBbIkBuZXh0L3N3Yy1kYXJ3aW4teDY0QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi12L1lMQkhJWTEzMkNlZDNwdUJKN1lKS3cxbHFzQ3JnY05vMmFSSmxDRXlRcnJDZVJKbHZHbG5teGhQeE5RSTNLRTNOMURONXI5VFBOUHZrYTNucTVSUT09Il0sCgogICAgIkBuZXh0L3N3Yy1saW51eC1hcm02NC1nbnUiOiBbIkBuZXh0L3N3Yy1saW51eC1hcm02NC1nbnVAMTYuMi42IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1SUE92cWxZQmJjUWprejlWUVFEWjJUMmJBUklqWFpWMUtGbHQrVjJNcjZTVy9lNEk5ZmNLc2FBMGhkeWYyRkhvVGxzVjJ4bkJkNVk5MTJyUC8xQ2U2dz09Il0sCgogICAgIkBuZXh0L3N3Yy1saW51eC1hcm02NC1tdXNsIjogWyJAbmV4dC9zd2MtbGludXgtYXJtNjQtbXVzbEAxNi4yLjYiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVVSVVR1MStkTWt4SnNQRmdtK09lRXZxOXdmNXN1ancwRXZnWXk4MFRER0hUU0xUbklIZXFiMEV1OEEzc0M5NUlSZ2plalFMK2tDNG13KzR5UHhpQVhBPT0iXSwKCiAgICAiQG5leHQvc3djLWxpbnV4LXg2NC1nbnUiOiBbIkBuZXh0L3N3Yy1saW51eC14NjQtZ251QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLURPajE4Mm1QVjhHM1VrcmF5TG9SRU01WUVZSStEazV3djdPeDl4bDFmRmliQUVMRXNGRDBsRFBmSEllSUxsdXRNTWZkeWhsellQRUxHM3BldUthdXJ3PT0iXSwKCiAgICAiQG5leHQvc3djLWxpbnV4LXg2NC1tdXNsIjogWyJAbmV4dC9zd2MtbGludXgteDY0LW11c2xAMTYuMi42IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSEtRNVNQL1YvdWI3M1V2RjduL3plSmx4azJrTG10TDdXenJnNFdmbWtqbU5vczVvbkoydEt1N3laT1BkTDE4QTZTdmZuM21heDI5eW0rcnk3TmtLNGc9PSJdLAoKICAgICJAbmV4dC9zd2Mtd2luMzItYXJtNjQtbXN2YyI6IFsiQG5leHQvc3djLXdpbjMyLWFybTY0LW1zdmNAMTYuMi42IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1MWlhwVGxQeVM1djdIaFNtbnZzTEdQM2lJWWdZT0JuYzhyOEFybFQ1NXNHSFY4OWJSMkhsRGRCaldRK1BZNlNKTW1rOFR1VkdGdXhhbG5QM2svMER3Zz09Il0sCgogICAgIkBuZXh0L3N3Yy13aW4zMi14NjQtbXN2YyI6IFsiQG5leHQvc3djLXdpbjMyLXg2NC1tc3ZjQDE2LjIuNiIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLUYwKzRpMGg5SjZDNGVFM0VBUFdzb0NrN1VXL2Riek9qeXp4WTBxbkRVT1lGdTZGRm1kWjZsOTcvWGRWMy9OejNWWXlPN1VXanlFSlVYa0dxY29YZk1BPT0iXSwKCiAgICAiQG94Yy1wcm9qZWN0L3R5cGVzIjogWyJAb3hjLXByb2plY3QvdHlwZXNAMC4xMzAuMCIsICIiLCB7fSwgInNoYTUxMi1pYkQydXN4OUpSdTdmNXB1MnRNS01JNGNwQTROZ1hKUW9ZUlA0cFE3UHhtbjFsNmsvNTNxV3RRV1pheWhZeTNYNFFaa3Q5ME90K21KRWFlWG91aW82UT09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWFuZHJvaWQtYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLWFuZHJvaWQtYXJtNjRAMS4wLjEiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItZkpJM0kwcjNDM09qL3pkQkNwYUNtQlJaWWYwN3hwYXE0eUNmRERvU0ZtK2JlV056YklsMjZwdVc4UnJhVWR1Z29Kdy85NXplck5PbjZqYXNBaHpTbWc9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1kYXJ3aW4tYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLWRhcndpbi1hcm02NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLWNLbkFoV0VzVjdUUGNBLzVFQXRlRHA2S2NKWkJRMkcrQnFFN3pheU1NaTdrTXZ3UnNidjdXVDlhT25uMFdObDRTS0VJZjQzdmpTMzFpVVB1ODBuelhnPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NCI6IFsiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1ZS3JWd1FqSVJCUG8rNUcvdTAzd0dqYmR5NHE3cHl6Q2U5M0RLOVZKN3prVm1lZzhMSjdHYmdzaUhXZFI0eFNvZTRDQVhSRDdCY2pnYnRyNjRia1hOZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWZyZWVic2QteDY0IjogWyJAcm9sbGRvd24vYmluZGluZy1mcmVlYnNkLXg2NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItei9vQnNSRW80NlNzRnFCd1l0RmUwa3BKZUJpakFUNDhPL1dYTEk0c3VpQ0xCa3IwM1JUdFRKTUN6U2REZDJ6bmxoOFZKaXpMMDlYVmtRZ2s4SVpvbnc9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmQDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItaWs4cTdHTTExenh2WXhGYzJQZURjVDZUQnZoQ1FNYVV4ZnBoL001bDlzS3VUcy9TamczTCtCeXcwRjd3MFpWTEJabXgzMFArZ0cwRUN6ek4rTUZjbVE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1nbnUiOiBbIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LWFybTY0LWdudUAxLjAuMSIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItUW9TeDJFa3lycmRaNmtjeUU4c3RxWjYydDBZcmE4RnM1aWE5bE94SnJoNlRNUUpLN2dRS21zY2RUSGY3cE9YS1JFS3JWd090SmNRRzNxVlNmYzg2NkE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsQDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi11d053RnB3S2VOaVphd2ZBV0JnZzBWSXp0UFRWM2loaGgxdlYzMzRoOWl2bk5Mb3J4blFNVTZGejh3RzFaYjRRaDlMQzEvTWtjeVQzWWxEWEczUnNnZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXBwYzY0LWdudSI6IFsiQHJvbGxkb3duL2JpbmRpbmctbGludXgtcHBjNjQtZ251QDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi16WTFidWw3T1dyN0RGQmlKKyt3b2ZYdm5yOEI0NWNlM1FzUVVoS3JJaFhzeWdBaDdiVGt3eWVNMWJpMWEyZzVDL3lDL044VFp5R0RFb01mbS9sOW1wZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXMzOTB4LWdudSI6IFsiQHJvbGxkb3duL2JpbmRpbmctbGludXgtczM5MHgtZ251QDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJzMzkweCIgfSwgInNoYTUxMi0wZnJsc1QvZjRGdDZJN1NNRVNUS25GM2Nac2RpY1FuMWRDTWtGL2pUOXdETEUrZ0dvaVFmdjFubVQ5ZStzN3MvZmVrdnZ5NnRaTTJqSHZJMnRrYkpEUT09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1nbnUiOiBbIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1nbnVAMS4wLjEiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1YQUJWbUdwOVRnMFdzcFRWdndkdVRjNGZwcXk2Sm5BVXJTUWU2T3V5cUQvMDNuSTdyME85T1dVa01Jd0ZyaktBSXFvbHZxb0E0WnJKcHBnd0UwR3htdz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1tdXNsIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC14NjQtbXVzbEAxLjAuMSIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLWJWNGZ6c3d1elZjS0Q5MG8vVk02UXFLeG54bERxMGcyQklTRExOVm14cm5ocHYxRERieVBoQ0lqWWZ2ellMVitNdmtLS25RdDJRNkFPODZTRUJVTFVRPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctb3Blbmhhcm1vbnktYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLW9wZW5oYXJtb255LWFybTY0QDEuMC4xIiwgIiIsIHsgIm9zIjogIm5vbmUiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLS9NaDBaaHEzT1A3ZlZzMGtjUUhaUDZsWkV0aE1HVGFTZjhVQlFZU0ZFWkRXR1hYbEVDK25KNkVxZW5hSzJ0NExCWE1lM0ErSy9HMkJWWFhkdE9yNFBRPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctd2FzbTMyLXdhc2kiOiBbIkByb2xsZG93bi9iaW5kaW5nLXdhc20zMi13YXNpQDEuMC4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvY29yZSI6ICIxLjEwLjAiLCAiQGVtbmFwaS9ydW50aW1lIjogIjEuMTAuMCIsICJAbmFwaS1ycy93YXNtLXJ1bnRpbWUiOiAiXjEuMS40IiB9LCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItKzF4YzlYNDVsOHVmc0JBbTZHanZ4MnFEUklZOWxUVnQwY2dXTmNKKzFnZGhYdmtieGVQQTYweVJUd1NUdVhMMDlDTWh5Sm1qcFY3RTNOb3l4YnFGUVE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjIjogWyJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjQDEuMC4xIiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi0xRCtVcVpkZm51UitKeTFHZ01Kd2k4NWJENDBIMjF1Tm1PUFJXUWh3NG9SU3VvbFovQjVyaXhaNDVESzJLWE9UQ3ZtVkNlY2F1V2dFaGJ3OGJJN3RPdz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLXdpbjMyLXg2NC1tc3ZjIjogWyJAcm9sbGRvd24vYmluZGluZy13aW4zMi14NjQtbXN2Y0AxLjAuMSIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLUlOQXljYVd1aGxPSzN3azRtUkhHc2Rnd1lXbWQ5Y0NoZFBkRTlid1dteTZybjlWcVZOWU5GR2hPZFhyb2ZYVXh3SEluY1NpUE5iOHRObThrbkRWSWVRPT0iXSwKCiAgICAiQHJvbGxkb3duL3BsdWdpbnV0aWxzIjogWyJAcm9sbGRvd24vcGx1Z2ludXRpbHNAMS4wLjEiLCAiIiwge30sICJzaGE1MTItMmo5Ykd0NUpoOGhqK3ZQdGd6UHRsNzJqMHlSeEhBeXVtb282VE5mQWpzTEIwNFV0cFN2UGJQY0RjQk14ejduKzlDWUIwYzFHeFFGeFlSZzJqaW1xR3c9PSJdLAoKICAgICJAc3RhbmRhcmQtc2NoZW1hL3NwZWMiOiBbIkBzdGFuZGFyZC1zY2hlbWEvc3BlY0AxLjEuMCIsICIiLCB7fSwgInNoYTUxMi1sMmFGeTVqQUxobmlHNUhncXJENmpYTGkvclVXckt2cU4vcUp4NnlvSnNnS2hibFZkK2lxcVU0UkNYYXZtL2pQaXR5RG81VEN2S01ucGpLbk9yaXkwdz09Il0sCgogICAgIkBzd2MvaGVscGVycyI6IFsiQHN3Yy9oZWxwZXJzQDAuNS4xNSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi44LjAiIH0gfSwgInNoYTUxMi1KUTVUdU1pNDVPd2k0L0JJTUFKQm9TUW9PSnUxMm9Pay9nQURxbGNVTDlKRWRIQjh2eWpVU3N4cWVOWG5tWEhqWUtNaTJXY1l0ZXpHRUVocVVJL0UyZz09Il0sCgogICAgIkB0YWJieV9haS9oaWpyaS1jb252ZXJ0ZXIiOiBbIkB0YWJieV9haS9oaWpyaS1jb252ZXJ0ZXJAMS4wLjUiLCAiIiwge30sICJzaGE1MTItcjViQ2xLcmNJdXNEb28wNDlkU0w4Q2F3bkhSNm1SZER3aGxRdUlnWlJOdHk2OHEweDhrM0xmMUJ0UEFNeFJmL0dnbkhCbklPNHVqZDMrR1FkTFd6eFE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvbm9kZSI6IFsiQHRhaWx3aW5kY3NzL25vZGVANC4zLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvcmVtYXBwaW5nIjogIl4yLjMuNSIsICJlbmhhbmNlZC1yZXNvbHZlIjogIl41LjIxLjAiLCAiaml0aSI6ICJeMi42LjEiLCAibGlnaHRuaW5nY3NzIjogIjEuMzIuMCIsICJtYWdpYy1zdHJpbmciOiAiXjAuMzAuMjEiLCAic291cmNlLW1hcC1qcyI6ICJeMS4yLjEiLCAidGFpbHdpbmRjc3MiOiAiNC4zLjAiIH0gfSwgInNoYTUxMi1hRmI0Z1VoRk9nZGg5QVhvNEl6QkVPekJra0F4bTlWaWd3REpuTUlZdjNsY2ZYQ0pWZXNOZmJFYUJsNEJOZ1ZSeWlkOTJBbWR2aXF3QlVCUktTZVkzZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZSI6IFsiQHRhaWx3aW5kY3NzL294aWRlQDQuMy4wIiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQHRhaWx3aW5kY3NzL294aWRlLWFuZHJvaWQtYXJtNjQiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtZGFyd2luLXg2NCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtZnJlZWJzZC14NjQiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybS1nbnVlYWJpaGYiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybTY0LWdudSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtbXVzbCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LWdudSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LW11c2wiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLXdhc20zMi13YXNpIjogIjQuMy4wIiwgIkB0YWlsd2luZGNzcy9veGlkZS13aW4zMi1hcm02NC1tc3ZjIjogIjQuMy4wIiwgIkB0YWlsd2luZGNzcy9veGlkZS13aW4zMi14NjQtbXN2YyI6ICI0LjMuMCIgfSB9LCAic2hhNTEyLUY3SFpHQmVOOUkwL0F1dUpTNVB3Y0Q4eGF5eDVyaTVHaGpZVURCRVZZVWtleHlBL2dpd2JETmpSVnJ4U2V6RTNUMjUwT1UySy93cC9sdFd4M1VPZWZnPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWFuZHJvaWQtYXJtNjQiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1hbmRyb2lkLWFybTY0QDQuMy4wIiwgIiIsIHsgIm9zIjogImFuZHJvaWQiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVRKUGlxNjd0S2xMdU9iUDZSa3d2VkdEb3hDTUJWdERnS2tMZmEvdXlqNy9GeXh2UXdIUytVT25WclhYZ2JFc2ZVYU1naVZ2QzRLYkpuUnIyNmhvNE5nPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NCI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NEA0LjMuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLW9NTi9XWlJiK1NPMzdCbVVFbEVnZUVXdVU4RS9IWFJraU9EeEp4TGUxVVRIVlhMcmRWU2dmYUpWN3BTbGhSR01TT2lYTHV4VElqZnNGM3dZdno4Y2dRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi14NjQiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1kYXJ3aW4teDY0QDQuMy4wIiwgIiIsIHsgIm9zIjogImRhcndpbiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLU42Q1VtdTRhNmJLVkFEZnc3N3AraXc2WWQ5UTNPQmhlMHZlYURYK1FhemZ1VllsUXNIZkRneEJyc2pRL0lXK3p5d0w4bVRyTmQwU2RKVC96Z3R2TWRBPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWZyZWVic2QteDY0IjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtZnJlZWJzZC14NjRANC4zLjAiLCAiIiwgeyAib3MiOiAiZnJlZWJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLXpETDVoQmtRZEg1QzZNcHFiSzNnUUFnUDgwdHNNd1NJMjZ2ak96akp0TkNNVW8wbEZnT0l0ekhLQkl1cE9aTlF4dDNvdVBIN1JQaHZOaGlUZkNlNUNRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybS1nbnVlYWJpaGYiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC1hcm0tZ251ZWFiaWhmQDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItUjA2SGROaTdBN09Fb01zZjZkNHRqWjcxUkNXblpRUEhqMm1ub3RTRlVSak5MZEJDK2NJZ1hRN2w4MUNxZW9pUWZ0amY2T09ibHhYTUluTWdOMlZ6TUE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtZ251IjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtZ251QDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1xVEpIRUxYOGpldGpoUlFIQ0xpbGtWTG15YnB6TlFBdGFJL2dhb1ZvaWRuL3VmYk5EYkFvOEtsSzJKK3lQb2M4d1F4dkR4Q21oLzVscjhuQzErbFRiZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC1hcm02NC1tdXNsIjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtbXVzbEA0LjMuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItWjZzdWtpUXNuZ25XTytsMzlYNHBQYmlXVDgxSUMrUExLRitQSHhJbHlaYkdOYjlNT0RmWWxYRVZsRnZlajVCT1pJbldYMDFrVnl6ZUx2SHNYaGZjelE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LWdudSI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LXg2NC1nbnVANC4zLjAiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1EUk5kUVJwU0d6UkdmQVJWdVZreHZNOFExMm5oMTlsNEJGL0c3ekdBMW9lKzl3Y0M2c2FGQkhUSVNycEljS3poaVh0U3JsU3JsdUNmdk11bGVkb0NUUT09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC14NjQtbXVzbCI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LXg2NC1tdXNsQDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItWjBJQURiRG84Ymg2STdoMklRTXg2MDFBZFhCTGZGcEVkVW90ZnQ4NmV2ZC84WlBmbFplOUNPUE84UTF2dytwZkxXSVVvOXpOL0pHWnZ3dUFKcWR1cWc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kiOiBbIkB0YWlsd2luZGNzcy9veGlkZS13YXNtMzItd2FzaUA0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAZW1uYXBpL2NvcmUiOiAiXjEuMTAuMCIsICJAZW1uYXBpL3J1bnRpbWUiOiAiXjEuMTAuMCIsICJAZW1uYXBpL3dhc2ktdGhyZWFkcyI6ICJeMS4yLjEiLCAiQG5hcGktcnMvd2FzbS1ydW50aW1lIjogIl4xLjEuNCIsICJAdHlieXMvd2FzbS11dGlsIjogIl4wLjEwLjEiLCAidHNsaWIiOiAiXjIuOC4xIiB9LCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItSE5aR09VeEVtRWxrc1lSN1M2c0M1alRlTkdwb2JBc3k5dTdHdTBBc2tKOC8yMEZSOUdxZWJVeUIrSEJjVS9heDZCSHVpdUppK09kYTRCK1lYNkgxeUE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2luMzItYXJtNjQtbXN2YyI6IFsiQHRhaWx3aW5kY3NzL294aWRlLXdpbjMyLWFybTY0LW1zdmNANC4zLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVBlK1JQVlRpMVQrcXltdXVScGNkdndTVlpqbmxsL2Y3bjhnQnhNTWgzeExUY3RNREtxcGRmR2ltYk15aW9xdExoVVlaeGRKOXdHTmhWN01LSHZnWnNRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLXdpbjMyLXg2NC1tc3ZjIjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtd2luMzIteDY0LW1zdmNANC4zLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1NdnJmMmtYVy95ZVcvT1RlelpsQ0dPaXJYUmNVdUxJQngvNVkxMkJhUE03d0pvcnlHNmRmUy9OSkw4YUJQcXRURXgvVm00VDR2S3pGVWNLRFQrVEtVQT09Il0sCgogICAgIkB0YWlsd2luZGNzcy9wb3N0Y3NzIjogWyJAdGFpbHdpbmRjc3MvcG9zdGNzc0A0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYWxsb2MvcXVpY2stbHJ1IjogIl41LjIuMCIsICJAdGFpbHdpbmRjc3Mvbm9kZSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUiOiAiNC4zLjAiLCAicG9zdGNzcyI6ICJeOC41LjEwIiwgInRhaWx3aW5kY3NzIjogIjQuMy4wIiB9IH0sICJzaGE1MTItSm0wNVRqeCs5eUNMR3Y1cXcxYys4NFBzZHM4TW55ckVRWUNCK0ZGazJsZ0dpVWpsUnFkeGtlNG1WVHVZcmoyeG5WWnFLaW0yQXByNXlTdVFSWUF3L3c9PSJdLAoKICAgICJAdHlieXMvd2FzbS11dGlsIjogWyJAdHlieXMvd2FzbS11dGlsQDAuMTAuMiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi40LjAiIH0gfSwgInNoYTUxMi1Sb0J2SjJYMHd1S2xXRklqcndmZkd3MUlxWkhLUXF6SWNoS2FhZFpaZm5OcHNBWXAybU0waDM2SnRQQ2pOREFIR2dZZXovMTV1TUJwZkd3Y2hoaU1nZz09Il0sCgogICAgIkB0eXBlcy9jaGFpIjogWyJAdHlwZXMvY2hhaUA1LjIuMyIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAdHlwZXMvZGVlcC1lcWwiOiAiKiIsICJhc3NlcnRpb24tZXJyb3IiOiAiXjIuMC4xIiB9IH0sICJzaGE1MTItTXc1NThvZUE5ZkZidjY1L3k0bUh0WERzOWJQbkZNWkFML2p4ZFBGVXBPSEhJWFg5MW1jZ0VIYlM1TGFocitwd1pGUjhBN0dRbGVSV2VJNmNHRkMyVUE9PSJdLAoKICAgICJAdHlwZXMvZGVlcC1lcWwiOiBbIkB0eXBlcy9kZWVwLWVxbEA0LjAuMiIsICIiLCB7fSwgInNoYTUxMi1jOWg5ZFZWTWlnTVBjNGJ3VHZDNWR4cXRxSlp3UVBlUHNXalBscFNPbm9qYm9yNnBHcWRrNTQxbGZBN0FxRlFyNXBCMUJSZHEwanVZOWRiODFCd3lGdz09Il0sCgogICAgIkB0eXBlcy9lc3RyZWUiOiBbIkB0eXBlcy9lc3RyZWVAMS4wLjkiLCAiIiwge30sICJzaGE1MTItR2hkUGd5MWVsNC9JbVAwNVgwNVV3NGN3Mi9NOTNCQ1VtbkV2V1pOU3RsQ3pFS01FNEZraytZcG9BNU9pSE5RbW9TN0NhZmI4WGEzUHlhOG0xUXJ6ZWc9PSJdLAoKICAgICJAdHlwZXMvbm9kZSI6IFsiQHR5cGVzL25vZGVAMjIuMTkuMTkiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidW5kaWNpLXR5cGVzIjogIn42LjIxLjAiIH0gfSwgInNoYTUxMi1keWgveE8yRmg1YllyZldhYXFHclJRUUdrTmRtWXc2QW1hQVV2WWVVTU5UV1F0dmI3OTZpa0xkbVRjaFJtT2xPaUlKMVREWGZXZ1Z4MVFrVWxRNkhldz09Il0sCgogICAgIkB0eXBlcy9yZWFjdCI6IFsiQHR5cGVzL3JlYWN0QDE5LjIuMTUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiY3NzdHlwZSI6ICJeMy4yLjIiIH0gfSwgInNoYTUxMi1lUndjR05IdmUrRThxdEVRU1NSbDZ1cmgrckZvcDR2OGdtNk84ckd2MjVDb2RidkZkTGpBMXZWUTFLa2lGRTB3MFVQT25iOHREaUZLTDVscDBydFk1UT09Il0sCgogICAgIkB0eXBlcy9yZWFjdC1kb20iOiBbIkB0eXBlcy9yZWFjdC1kb21AMTkuMi4zIiwgIiIsIHsgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJAdHlwZXMvcmVhY3QiOiAiXjE5LjIuMCIgfSB9LCAic2hhNTEyLWpwMkwvZVk2Zm4rS2dWVlFBT3FZSXRiRjBWWS9ZQXBlNU16MkYwYXlrU084Z3gzMWJZQ1p5dlNlWXhDSEt2ekhHNWVaamMrenlhUzVCckJXeWEyK2tRPT0iXSwKCiAgICAiQHZpdGVzdC9leHBlY3QiOiBbIkB2aXRlc3QvZXhwZWN0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBzdGFuZGFyZC1zY2hlbWEvc3BlYyI6ICJeMS4xLjAiLCAiQHR5cGVzL2NoYWkiOiAiXjUuMi4yIiwgIkB2aXRlc3Qvc3B5IjogIjQuMS42IiwgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAiY2hhaSI6ICJeNi4yLjIiLCAidGlueXJhaW5ib3ciOiAiXjMuMS4wIiB9IH0sICJzaGE1MTItN0VIRHF1UHRoQUxTVjBqaGhqZ0VXOEZYYXZpTXg3clNxdThXNm9xQ29BdU9oS292ODE0UDk5UURWMXB4TUEzUVB2MjFZdWR2Sm5nSWhqck5JNG9wTGc9PSJdLAoKICAgICJAdml0ZXN0L21vY2tlciI6IFsiQHZpdGVzdC9tb2NrZXJANC4xLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHZpdGVzdC9zcHkiOiAiNC4xLjYiLCAiZXN0cmVlLXdhbGtlciI6ICJeMy4wLjMiLCAibWFnaWMtc3RyaW5nIjogIl4wLjMwLjIxIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIm1zdyI6ICJeMi40LjkiLCAidml0ZSI6ICJeNi4wLjAgfHwgXjcuMC4wIHx8IF44LjAuMCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIm1zdyIsICJ2aXRlIl0gfSwgInNoYTUxMi1NQ0ZjNjNjek1qRUluT2xjWTJjcFFDdkNOK0tnYkFuKzYweHU5Y01nUDRzS2FMQzVKTkFLdzdKSDhRZEFub0FDODhoVzFJaVNOWitHZ1ZYbE4xVWNNUT09Il0sCgogICAgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6IFsiQHZpdGVzdC9wcmV0dHktZm9ybWF0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRpbnlyYWluYm93IjogIl4zLjEuMCIgfSB9LCAic2hhNTEyLWg1U3hEL0l6TmhaWW5yU1pSc1VaUUlDK3ZEMEdZOGNVdnEwaXdzbWtGS2l4UkNLTExXcUNYYS9GSVE0UzFSK3NJK1BHb29qa0hzZE5yYlppTTlRcGd3PT0iXSwKCiAgICAiQHZpdGVzdC9ydW5uZXIiOiBbIkB2aXRlc3QvcnVubmVyQDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAicGF0aGUiOiAiXjIuMC4zIiB9IH0sICJzaGE1MTItbk9QQ21uMit5RDBaTm1LZHNYR3YvVXhNTVdiTXVLZUQ2R3lZbmNOd2RrWUR4cFF2clBTS1lqMnJXdURqQzJZNGI2dzZoamlwNWRCS0Z6RVV1WmUzdkE9PSJdLAoKICAgICJAdml0ZXN0L3NuYXBzaG90IjogWyJAdml0ZXN0L3NuYXBzaG90QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6ICI0LjEuNiIsICJAdml0ZXN0L3V0aWxzIjogIjQuMS42IiwgIm1hZ2ljLXN0cmluZyI6ICJeMC4zMC4yMSIsICJwYXRoZSI6ICJeMi4wLjMiIH0gfSwgInNoYTUxMi1ZaHNkRTZ4QVZmVERtemp4TDJaRFV2amorWnNneU9LZStUZFF6cWtENzJ3SU9tSGthOE51R1E2TnBUTlp2OUQyWjYzZmJ3V0tKUGVWcEV3NEVRZ1l4dz09Il0sCgogICAgIkB2aXRlc3Qvc3B5IjogWyJAdml0ZXN0L3NweUA0LjEuNiIsICIiLCB7fSwgInNoYTUxMi1KRkt4TXg2dWRod0toL0xkbzI3MGUxN1FYNzEwdmd1bk1rdVBBdlhqSFN2QzZvcUxXQUhoVmhqZy9JNzFxMHUwQ0JTRXJJT0RWMUtqdjBGUU5TV2pkZz09Il0sCgogICAgIkB2aXRlc3QvdXRpbHMiOiBbIkB2aXRlc3QvdXRpbHNANC4xLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHZpdGVzdC9wcmV0dHktZm9ybWF0IjogIjQuMS42IiwgImNvbnZlcnQtc291cmNlLW1hcCI6ICJeMi4wLjAiLCAidGlueXJhaW5ib3ciOiAiXjMuMS4wIiB9IH0sICJzaGE1MTItRnhJWStVODFSM0xHS0N4YUhIRlJRNStnNi9pUmdHTG1lSFdkcDJBbWo0bGpRUnJFSVdIbVp5RGZEWUJSWmxweXFBN3FLeHRTOUREMWRoazhSblJJVlE9PSJdLAoKICAgICJhY29ybiI6IFsiYWNvcm5AOC4xNi4wIiwgIiIsIHsgImJpbiI6IHsgImFjb3JuIjogImJpbi9hY29ybiIgfSB9LCAic2hhNTEyLVVWSnlFOU10dE9zQlFJREt3MXNrYjluQXdRdVI1d3VHRDMrODJLNkpnSmxtL1krS0k5Mm9Oc01OR1pDWWREc1Z0UkhTYWswcGNWNURubzUrNGpoOXN3PT0iXSwKCiAgICAiYW5zaS1yZWdleCI6IFsiYW5zaS1yZWdleEA1LjAuMSIsICIiLCB7fSwgInNoYTUxMi1xdUpRWGxUU1VHTDJMSDlTVVhvOFZ3c1k0c29hbmhnbzZMTlNtODRFMUxCY0U4czNPMHdwZGlSenlSOXovWlpKTWxNV3YzN3FPT2I5cGRKbE1VRUtGUT09Il0sCgogICAgImFuc2ktc3R5bGVzIjogWyJhbnNpLXN0eWxlc0A0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjb2xvci1jb252ZXJ0IjogIl4yLjAuMSIgfSB9LCAic2hhNTEyLXpiQjlyQ0pBVDFyYmppVkRiMmhxS0ZITllMeGd0azhOVVJ4WjNJWndEM0Y2TnR4YlhaUUNublNpMUxreCtJRG9oZFBsRnAyMjJ3VkFMSWhlWkpRU0VnPT0iXSwKCiAgICAiYXNzZXJ0aW9uLWVycm9yIjogWyJhc3NlcnRpb24tZXJyb3JAMi4wLjEiLCAiIiwge30sICJzaGE1MTItSXppOFJRY2ZmcUNlTlZnRmlnS2xpMXNza2xJYnBIbkNZYzZBa25YR1lvQjZnckpxeWVieTdqdjEySlVRZ21UQW5JRG5iY2sxdXhrc1Q0ZHpOM1BXQkE9PSJdLAoKICAgICJiYXNlbGluZS1icm93c2VyLW1hcHBpbmciOiBbImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZ0AyLjEwLjMxIiwgIiIsIHsgImJpbiI6IHsgImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZyI6ICJkaXN0L2NsaS5janMiIH0gfSwgInNoYTUxMi1NdWpZTzNlUDcydXZtU0UwaTR3bHRzb2RSZklwWkFUUDNqdnpSTlJHR3hneklkN2FWb2NWSkpWM25mMDFxbnp6S0ZHeFFWQzlicFd4bDVjanhUci83UT09Il0sCgogICAgImJ1ZmZlci1mcm9tIjogWyJidWZmZXItZnJvbUAxLjEuMiIsICIiLCB7fSwgInNoYTUxMi1FK1hRQ1J3U2JhYWlDaHR2Nms2RHdnYytieCtCczZ2dUtKSEhsNWtveC9CYUtiaGlYenFRT3dLNGNPMjJ5RWxHcDJPQ21qd1ZoVDNIbXhneVBHbkpmUT09Il0sCgogICAgImNhbml1c2UtbGl0ZSI6IFsiY2FuaXVzZS1saXRlQDEuMC4zMDAwMTc5MyIsICIiLCB7fSwgInNoYTUxMi1pd1NzWVdhQ09vaDI2Y1Y4TndOUlZpSGxyZlV2WXNIRGZSVmNidG13MEtnNlBKSVpaWHdNa2oxNDQyRllMQkdrZVVmMWp1QXNVM0RUZnhXNTc5bXJQQT09Il0sCgogICAgImNoYWkiOiBbImNoYWlANi4yLjIiLCAiIiwge30sICJzaGE1MTItTlVQUmx1T2ZPaVRLQkt2V1B0U0Q0UGhGdldDcU9pMEJHU3ROV3M1N1g5anM3WEdUcHJTbUZvejVGMHRXaFI0V1BqTmVSOWpYcWRDNy9VcFNKVG5sUmc9PSJdLAoKICAgICJjaGFsayI6IFsiY2hhbGtANC4xLjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiYW5zaS1zdHlsZXMiOiAiXjQuMS4wIiwgInN1cHBvcnRzLWNvbG9yIjogIl43LjEuMCIgfSB9LCAic2hhNTEyLW9LbmJoRnlSSVhwVXVlejhpQk1teUVhNG5iajRJT1F5dWhjL3d5OWtZNy9XVlBjd0lPOVZBNjY4UHU4UmtPNyswRzc2U0xST2V5dzlDcFEwNjFpNG1BPT0iXSwKCiAgICAiY2xpZW50LW9ubHkiOiBbImNsaWVudC1vbmx5QDAuMC4xIiwgIiIsIHt9LCAic2hhNTEyLUlWM091MGpTTXpacmQzcFo0OG5Ma1Q5REE3QWcxcG5QemFpUWhwVzdjM1JiY3FxenZ6elZ1K0w4Z2ZxTXAvOElNMk1RdFNpcWFDeHJyY2Z1OEk4ck1BPT0iXSwKCiAgICAiY2xpdWkiOiBbImNsaXVpQDguMC4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInN0cmluZy13aWR0aCI6ICJeNC4yLjAiLCAic3RyaXAtYW5zaSI6ICJeNi4wLjEiLCAid3JhcC1hbnNpIjogIl43LjAuMCIgfSB9LCAic2hhNTEyLUJTZU5ueXVzNzVDNC8vTlE5Z1F0MS9jc1RYeW8vOFNiK2FmTEFrekFwdEZ1TXNvZDlIRm9rR051ZFpwaS9vUVY3M2huVksrc1IrNVBWUk1kK0RyN1lRPT0iXSwKCiAgICAiY2xzeCI6IFsiY2xzeEAyLjEuMSIsICIiLCB7fSwgInNoYTUxMi1lWW0wUVdCdFVyQldaV0cwZDM4Nk9HQXcxNlo5OTVQaU9WbzJCN2JqV1NiSGVkR2w1ZTBaV2FxNjVrT0dnVVNOZXNFSURrQjlJU2JUZy9KSzlkaENaQT09Il0sCgogICAgImNvbG9yLWNvbnZlcnQiOiBbImNvbG9yLWNvbnZlcnRAMi4wLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiY29sb3ItbmFtZSI6ICJ+MS4xLjQiIH0gfSwgInNoYTUxMi1SUkVDUHNqN2l1L3hiNW9LWWNzRkhTcHBGTm5zai81Mk9WVFJLYjR6UDVvblh3VkYzelZtbVRvTmNPZkdDK0NSRHBmSy9VNTg0Zk1nMzhaSENhRWxLUT09Il0sCgogICAgImNvbG9yLW5hbWUiOiBbImNvbG9yLW5hbWVAMS4xLjQiLCAiIiwge30sICJzaGE1MTItZE95KzNBdVczYTJ3TmJaSEl1TVpwVGNnakd1TFUvdUJML3ViY1pGOU9YYkRvOGZmNE84eVZwNUJmMGVmUzh1RW9ZbzVxNEZ4N2RZOU9nUUdYZ0FzUUE9PSJdLAoKICAgICJjb21tYW5kZXIiOiBbImNvbW1hbmRlckAyLjIwLjMiLCAiIiwge30sICJzaGE1MTItR3BWa21NOHZGMnZRVWtqMkx2Wm1EMzVKeGVKT0xDd0o5Y1VrdWd5azJudWhidjMrbUp2cExZWXQrMCtVU014RStvaitleS9sSkVuaFp3NzV4L09NY1E9PSJdLAoKICAgICJjb25jdXJyZW50bHkiOiBbImNvbmN1cnJlbnRseUA5LjIuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjaGFsayI6ICI0LjEuMiIsICJyeGpzIjogIjcuOC4yIiwgInNoZWxsLXF1b3RlIjogIjEuOC4zIiwgInN1cHBvcnRzLWNvbG9yIjogIjguMS4xIiwgInRyZWUta2lsbCI6ICIxLjIuMiIsICJ5YXJncyI6ICIxNy43LjIiIH0sICJiaW4iOiB7ICJjb25jIjogImRpc3QvYmluL2NvbmN1cnJlbnRseS5qcyIsICJjb25jdXJyZW50bHkiOiAiZGlzdC9iaW4vY29uY3VycmVudGx5LmpzIiB9IH0sICJzaGE1MTItZnNmck8wTXhWNjRabm95OC9sMXZWSWpqSGEyOVNaeXlxUGdRQndoaURjYVc4d0pjMlczWFdWT0d4NE0zb0pCbnYvemRVWklJcDFnRGVTOThHelA4Tmc9PSJdLAoKICAgICJjb252ZXJ0LXNvdXJjZS1tYXAiOiBbImNvbnZlcnQtc291cmNlLW1hcEAyLjAuMCIsICIiLCB7fSwgInNoYTUxMi1LdnA0NTlIclYyRkVKMUNBc2kxS3UrTVkza2FzSDE5VEZ5a1R6MnhXbU1lcTZiazJOVTNYWHZmSitRNjFtMHhrdFd3dCsxSFNZZjNKWnNUbXMzYVJKZz09Il0sCgogICAgImNzc3R5cGUiOiBbImNzc3R5cGVAMy4yLjMiLCAiIiwge30sICJzaGE1MTItejFIR0tjWXkyeEE4QUdRZndybjBQQXkrUEI3WC9HU2ozVVZKVzlxS3luNDN4V2ErZ2w1blhtVTRxcUxNUnpXVkxGQzhLdXNVWDhULzBrQ2lPWXBBSVE9PSJdLAoKICAgICJkYXRlLWZucyI6IFsiZGF0ZS1mbnNANC4yLjEiLCAiIiwge30sICJzaGE1MTItMzdSaFNkeGFHMXN1ZW42VkRDemE2ck5yUWZvb3lRaDU3SEZWUHdRR0VxMlFXbGlWTHpQUVo4T2EwMTd3ZU91K0haQ256STdOM1BmL3d5b0JLZkVxckE9PSJdLAoKICAgICJkYXRlLWZucy1qYWxhbGkiOiBbImRhdGUtZm5zLWphbGFsaUA0LjEuMC0wIiwgIiIsIHt9LCAic2hhNTEyLWhUSVAveit0K3FLd0JEY21tc25taldUZHV4Q2crNUtmZHFXUXZiMlgvOEM5K2tuWVk2ZXBOL3BmeGREdXlWbFNWZUZ6MHNNNWVFZndJVVE3MFU0Y2tnPT0iXSwKCiAgICAiZGV0ZWN0LWxpYmMiOiBbImRldGVjdC1saWJjQDIuMS4yIiwgIiIsIHt9LCAic2hhNTEyLUJ0ajJCT09PODNvM1d5SDU5ZThNZ1hzeEVRVmNhcmtVT3BFWXJ1YkIwdXJ3bk4xMHlRMzY0cnNpQnlVMTFuWmxxV1labTA1aS9vZjdpbzRtemloQnRRPT0iXSwKCiAgICAiZW1vamktcmVnZXgiOiBbImVtb2ppLXJlZ2V4QDguMC4wIiwgIiIsIHt9LCAic2hhNTEyLU1Tall6Y1dOT0EwZXdBSHB6ME14cFlGdndnNnlqeTFORzN4dGVvcXo2NDRWQ28vUlBnbnIxL0dHdCtpYzNpSlR6UThFdTNUZE0xNFNhd25WVW1HRTZBPT0iXSwKCiAgICAiZW5oYW5jZWQtcmVzb2x2ZSI6IFsiZW5oYW5jZWQtcmVzb2x2ZUA1LjIxLjUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZ3JhY2VmdWwtZnMiOiAiXjQuMi40IiwgInRhcGFibGUiOiAiXjIuMy4zIiB9IH0sICJzaGE1MTItbUxDTmJyUWxpMTFLMXlTVW11TnQ0WlVCM09wR0lEcTRxMnZUQlRmNWNMMmxwc1JqSTlRS3FTRDBuZGpXOEZ5dmNXL0pqNDZnTWU5c3l5SEFzdk1hL0E9PSJdLAoKICAgICJlcy1tb2R1bGUtbGV4ZXIiOiBbImVzLW1vZHVsZS1sZXhlckAyLjEuMCIsICIiLCB7fSwgInNoYTUxMi1uMjd6VFlNall1MWFqNE1qQ1d6U1A3RzlyNzV1dHNhb2M4bTYxd2VLK1c4Sk1CR0dReWJkNDNHc3RDWFozV05tU0Z0R1Q5d2k1OXFRVFc2bWhUUjVMUT09Il0sCgogICAgImVzYnVpbGQiOiBbImVzYnVpbGRAMC4yNS40IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGVzYnVpbGQvYWl4LXBwYzY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9hbmRyb2lkLWFybSI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvYW5kcm9pZC1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvYW5kcm9pZC14NjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2Rhcndpbi1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZGFyd2luLXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZnJlZWJzZC1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZnJlZWJzZC14NjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWFybSI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtYXJtNjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWlhMzIiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWxvb25nNjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LW1pcHM2NGVsIjogIjAuMjUuNCIsICJAZXNidWlsZC9saW51eC1wcGM2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtcmlzY3Y2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtczM5MHgiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbmV0YnNkLWFybTY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9uZXRic2QteDY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9vcGVuYnNkLWFybTY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9vcGVuYnNkLXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvc3Vub3MteDY0IjogIjAuMjUuNCIsICJAZXNidWlsZC93aW4zMi1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvd2luMzItaWEzMiI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvd2luMzIteDY0IjogIjAuMjUuNCIgfSwgImJpbiI6IHsgImVzYnVpbGQiOiAiYmluL2VzYnVpbGQiIH0gfSwgInNoYTUxMi04cGdqTFVjVWpjZ0RnKzJRNE5ZWG5QYm8vdm5jQVk0VW15YUNtMGpaZXZFUnFDSFpJYVd3ZEpIa2Y4WFF0dTRBeFNLQ2R2clViVDBYVXIxSWRaekk4UT09Il0sCgogICAgImVzY2FsYWRlIjogWyJlc2NhbGFkZUAzLjIuMCIsICIiLCB7fSwgInNoYTUxMi1XVWoycWx4YVF0TzRnNlBxNWMyOUdUY1dHRHlkOGl0TDh6VGxpcGdFQ3ozSmVzQWlpT0tvdGQ4SlU2b3RCM1BBQ2dHNnhrSlV5Vmhib01TK2JqZS9qQT09Il0sCgogICAgImVzdHJlZS13YWxrZXIiOiBbImVzdHJlZS13YWxrZXJAMy4wLjMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL2VzdHJlZSI6ICJeMS4wLjAiIH0gfSwgInNoYTUxMi03UlVLZlhnU01Na3p0Nlp1WG1xYXBPdXJMR1BQZmdqNmw5dVJaN2xSR29sdmsweTJ5b2NjMzVMZGN4S0M1UFFaZG4yRE1xaW9BUTJOb1djclRLbW02Zz09Il0sCgogICAgImV4cGVjdC10eXBlIjogWyJleHBlY3QtdHlwZUAxLjMuMCIsICIiLCB7fSwgInNoYTUxMi1rbnZ5ZWF1WWhxak9ZdlE2Nk16blNNczgzd21IckN5Y05FTjZBbysyQWVZRWZ4VUlrdWlWeGRFYTFxbEdFUEsrV2UzbjBUSGlEY2lZU3NDY2dXL0RvQT09Il0sCgogICAgImZkaXIiOiBbImZkaXJANi41LjAiLCAiIiwgeyAicGVlckRlcGVuZGVuY2llcyI6IHsgInBpY29tYXRjaCI6ICJeMyB8fCBeNCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbInBpY29tYXRjaCJdIH0sICJzaGE1MTItdEliWXRaYnVjT3MwQlJHcVBKa3NoSlVZZEwrU0RIN2RWTThnankrRVJwM1dBVWpMRUZKRSswMmthbnlIdHdqV09ud3JLWUJpd0FtTTBwNGtMSkFuWGc9PSJdLAoKICAgICJmc2V2ZW50cyI6IFsiZnNldmVudHNAMi4zLjMiLCAiIiwgeyAib3MiOiAiZGFyd2luIiB9LCAic2hhNTEyLTV4b0RmWCtmTDdmYUFUbmFnbVdQcGJGdHdoL1I3N1dtTU1xcUhHUzY1QzN2dkIwWUhyZ0YrQjFZbVozNDQxdE1qNW42M2swMjEyWE5vSnd6bGhmZlF3PT0iXSwKCiAgICAiZ2V0LWNhbGxlci1maWxlIjogWyJnZXQtY2FsbGVyLWZpbGVAMi4wLjUiLCAiIiwge30sICJzaGE1MTItRHlGUDNCTS8zWUhUUU9DVUwvdzBPWkhSMGxwS2VHcnhvdGNIV2NxTkVkbmx0cUZ3WFZmaEVCUTk0ZUlvMzRBZlFwbzByR2tpNGN5SWlmdFkwNmgyRmc9PSJdLAoKICAgICJncmFjZWZ1bC1mcyI6IFsiZ3JhY2VmdWwtZnNANC4yLjExIiwgIiIsIHt9LCAic2hhNTEyLVJiSjUvam1GY05OQ2NEVjVvOWVUbkJMSi9Ic3pXVjBQNzNiYytGZjRuUy9ySmorWWFTNklHeWlPTDBWb0JZWCtsMVdybDNrNjNoL0tySCtuaEowWHZRPT0iXSwKCiAgICAiaGFzLWZsYWciOiBbImhhcy1mbGFnQDQuMC4wIiwgIiIsIHt9LCAic2hhNTEyLUV5a0pUL1ExS2pUV2N0cHBnSUFnZlNPMHRLVnVaVWpoZ01yMTdrcVR1bU1sNkFmdjNFSVNsZVU3cVpVem9YREZUQUhUREM0Tk9vRy9aeFUzRXZsTVBRPT0iXSwKCiAgICAiaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQiOiBbImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50QDMuMC4wIiwgIiIsIHt9LCAic2hhNTEyLXp5bW01K3Urc0NzU1d5RDlxTmFlalYzREZ2aENLY2xLZGl6WWFKVXVIQTgzUkxqYjduU3VHbmRkQ0hHdjBoaytLWTdCTUFsc1dlSzRVZWc2RVY2WFFnPT0iXSwKCiAgICAiaml0aSI6IFsiaml0aUAyLjcuMCIsICIiLCB7ICJiaW4iOiB7ICJqaXRpIjogImxpYi9qaXRpLWNsaS5tanMiIH0gfSwgInNoYTUxMi1BQy83Sm9mSnZaR3JybmVXTmFFbkplT0xVeCtKbEd0N3ROYTB3WmlSUFQ0TVkxd21mS2p0Mis2TzJwMnV6Mitza2xsOE9aWm1KTU5xZWtlN2tLYk5nUT09Il0sCgogICAgImxpYnBob25lbnVtYmVyLWpzIjogWyJsaWJwaG9uZW51bWJlci1qc0AxLjEyLjQxIiwgIiIsIHt9LCAic2hhNTEyLWxzbU1tR1hCeFhJSy9WTUxFajBrTDZNdFVzMWtCR2oxblRDemk2emdRb0cxREV3cXd0MkRReUh4Y0x5a2NlSXhBbmZFM2h5YTdOdUloNlBwQzZTM2ZBPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzIjogWyJsaWdodG5pbmdjc3NAMS4zMi4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImRldGVjdC1saWJjIjogIl4yLjAuMyIgfSwgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAibGlnaHRuaW5nY3NzLWFuZHJvaWQtYXJtNjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1kYXJ3aW4tYXJtNjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1kYXJ3aW4teDY0IjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtZnJlZWJzZC14NjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1saW51eC1hcm0tZ251ZWFiaWhmIjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251IjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtbXVzbCI6ICIxLjMyLjAiLCAibGlnaHRuaW5nY3NzLWxpbnV4LXg2NC1nbnUiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtbXVzbCI6ICIxLjMyLjAiLCAibGlnaHRuaW5nY3NzLXdpbjMyLWFybTY0LW1zdmMiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy13aW4zMi14NjQtbXN2YyI6ICIxLjMyLjAiIH0gfSwgInNoYTUxMi1OWFlCemluTnJibGZyYVBHeXJiUG9EMTlDMWg5bGZJLzFtemdXWXZYVVRlNDE0R3ovWDFGRDJYQlpTWk03clJUck1BOEpMM090QWFHaWZySUtoUTV5UT09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1hbmRyb2lkLWFybTY0IjogWyJsaWdodG5pbmdjc3MtYW5kcm9pZC1hcm02NEAxLjMyLjAiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItWUs3L0NsVHQ0a0FLMHZvNnczWCtQbm0wRDJjZjJ2UEhiaE9YZG9OdGkxR2EwYWwxUDRUQlpod2pBVHZqTndMRUJDbkt2akpjMmpRZ0hYSDBORXdsQWc9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtZGFyd2luLWFybTY0IjogWyJsaWdodG5pbmdjc3MtZGFyd2luLWFybTY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVJ6ZUc5SnU1YmFnMkJ2MS9sd2xWSnZCRTNxNlR0WHNrZFpMTEN5Zmc1cHQrSEx6OUJxbElDTzdMWk03VkhOVFRuLzVQUmhIRkJTams1bGM0Y21zY1BRPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzLWRhcndpbi14NjQiOiBbImxpZ2h0bmluZ2Nzcy1kYXJ3aW4teDY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1VK1FzQnAybS9zMndxcFVZVC82d25sYWdkWmJ0WmRuZFNtdXQvTkpxbENjTUxUV3A1bXVDcklEK0s1VUo2anFEMkJGc2hlakNZWG5pUERiTmg3M1Y4dz09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1mcmVlYnNkLXg2NCI6IFsibGlnaHRuaW5nY3NzLWZyZWVic2QteDY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSkNUaWdlZEVrc1prM3RIVFR0aG5NZFZmR2Y2MUZreThKaTJFNFlqVVRFUVgxNHhpeS9sVHpYbnUxdndpWmUzYlllMHErU3BzU0gvQ1RlRFhLNldIaWc9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtLWdudWVhYmloZiI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LWFybS1nbnVlYWJpaGZAMS4zMi4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTIteDZybm5wUmEyR0wwelFPa3Q2cnRzM1lEUHpkdUxwV3Z3QUY2RU1oWEZWWlhENHRQckJrRUZxekdvd3pDc0lXc1BqcVNLK3R5TkVPRFVCWGVlVkhTa3c9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251IjogWyJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItMG5uTXlveU9MUkpYZmJNT2lsYVNSY0xIM0p3NXo5SEROR2ZUL2d3Q1BnYURqbngwaTh3N3ZCekZMRlIxZjZDTUxLRjhnVmJlYm1rVU4zZmEva1FKcFE9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtbXVzbCI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LWFybTY0LW11c2xAMS4zMi4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1VcFFrb2VucjRVSkV6Z1ZJWXBJODBsREZ2Um1QVmc2b3Fib05IZm9INENRSWZOQStIT3JaN01vN0taUDAyZEM2TGpnaFBRSmVCc3ZYaEpvZC93bklCZz09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtZ251IjogWyJsaWdodG5pbmdjc3MtbGludXgteDY0LWdudUAxLjMyLjAiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1WN1FyNTJJaFptZEtQVnIrVnR3OG8rV0xzUUpZQ1RkOGxvSWZwRGFNUldHVVpmQk9ZRUpleUpJa3FHSURNWlB3UHgyNHBVTWZ3U3h4SThwaHIvTWJPQT09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtbXVzbCI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LXg2NC1tdXNsQDEuMzIuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLWJZY0xwK1ZiMGF3c2lYZy84MHVDUmV6Q1lITmcxL2wzbXQwZ3pIbldWOVhQMVc1c0thNS9UQ2RHV2FSL3pCTTJQZUYvSGJzUXYvajJVUk5PaVZ1eFdnPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzLXdpbjMyLWFybTY0LW1zdmMiOiBbImxpZ2h0bmluZ2Nzcy13aW4zMi1hcm02NC1tc3ZjQDEuMzIuMCIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItOFNiQzhCUjQwcFM2YmFDTThzYnRZRFN3RVZRZDRKbEZUT2xhRDNnV0dIZlRoVGNBQm5OREJkYTZlVFplcWJvZmFsSUpoRngwcUt6Z0hKbWNQVG5HZHc9PSJdLAoKICAgICJsaWdodG5pbmdjc3Mtd2luMzIteDY0LW1zdmMiOiBbImxpZ2h0bmluZ2Nzcy13aW4zMi14NjQtbXN2Y0AxLjMyLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1BbXE5Qi9Tb1pZZERpMWtGcm9qbm9xUEx4WWhRNFdvNVhpTDhFVkpyVnNCOEFSb0MxUFdXNlZHdFQwV0tDZW1qeThhQytsb3VKbmpTN1UxOHgzYjA2UT09Il0sCgogICAgIm1hZ2ljLXN0cmluZyI6IFsibWFnaWMtc3RyaW5nQDAuMzAuMjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjIjogIl4xLjUuNSIgfSB9LCAic2hhNTEyLXZkMkY0WVV5RVhLR2NMSG9xK1RFeUNqeHVlU2VIbkZ4eXlqTnA4MHlnMFhWNHZVaG5EZXIvbHZ2bHFNL2FyQjViWFFONUsyLzNvaW55Q1J5eDhUMkNRPT0iXSwKCiAgICAibmFub2lkIjogWyJuYW5vaWRAMy4zLjEyIiwgIiIsIHsgImJpbiI6IHsgIm5hbm9pZCI6ICJiaW4vbmFub2lkLmNqcyIgfSB9LCAic2hhNTEyLVpCOVJILzM5cXBxNVZ1NlkrTm1VYUZoUVI2cHArTTJYdDc2WEJuRXdEYUdjVkFxaGx2eHJsM0IyYktTNUQzTkgzUVI3NnYzYVNyS2FGL0tpeTdsRXRRPT0iXSwKCiAgICAibmV4dCI6IFsibmV4dEAxNi4yLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQG5leHQvZW52IjogIjE2LjIuNiIsICJAc3djL2hlbHBlcnMiOiAiMC41LjE1IiwgImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZyI6ICJeMi45LjE5IiwgImNhbml1c2UtbGl0ZSI6ICJeMS4wLjMwMDAxNTc5IiwgInBvc3Rjc3MiOiAiOC40LjMxIiwgInN0eWxlZC1qc3giOiAiNS4xLjYiIH0sICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBuZXh0L3N3Yy1kYXJ3aW4tYXJtNjQiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy1kYXJ3aW4teDY0IjogIjE2LjIuNiIsICJAbmV4dC9zd2MtbGludXgtYXJtNjQtZ251IjogIjE2LjIuNiIsICJAbmV4dC9zd2MtbGludXgtYXJtNjQtbXVzbCI6ICIxNi4yLjYiLCAiQG5leHQvc3djLWxpbnV4LXg2NC1nbnUiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy1saW51eC14NjQtbXVzbCI6ICIxNi4yLjYiLCAiQG5leHQvc3djLXdpbjMyLWFybTY0LW1zdmMiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy13aW4zMi14NjQtbXN2YyI6ICIxNi4yLjYiLCAic2hhcnAiOiAiXjAuMzQuNSIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJAb3BlbnRlbGVtZXRyeS9hcGkiOiAiXjEuMS4wIiwgIkBwbGF5d3JpZ2h0L3Rlc3QiOiAiXjEuNTEuMSIsICJiYWJlbC1wbHVnaW4tcmVhY3QtY29tcGlsZXIiOiAiKiIsICJyZWFjdCI6ICJeMTguMi4wIHx8IDE5LjAuMC1yYy1kZTY4ZDJmNC0yMDI0MTIwNCB8fCBeMTkuMC4wIiwgInJlYWN0LWRvbSI6ICJeMTguMi4wIHx8IDE5LjAuMC1yYy1kZTY4ZDJmNC0yMDI0MTIwNCB8fCBeMTkuMC4wIiwgInNhc3MiOiAiXjEuMy4wIiB9LCAib3B0aW9uYWxQZWVycyI6IFsiQG9wZW50ZWxlbWV0cnkvYXBpIiwgIkBwbGF5d3JpZ2h0L3Rlc3QiLCAiYmFiZWwtcGx1Z2luLXJlYWN0LWNvbXBpbGVyIiwgInNhc3MiXSwgImJpbiI6IHsgIm5leHQiOiAiZGlzdC9iaW4vbmV4dCIgfSB9LCAic2hhNTEyLXFPVmdLSmcxK0F0MTVOcGVVUCtlSmdDSHZUQ2dYc29nd2VxODdSaS9JeDdQa3FRSGc0c2RhWG1TRnFLbGdhSVhFNGtXMGcyNUxFNjhXODdVQU5sSHR3PT0iXSwKCiAgICAib2J1ZyI6IFsib2J1Z0AyLjEuMSIsICIiLCB7fSwgInNoYTUxMi11VHFGOU11UHJhQVErSXNuUGYzNjZSRzRjUDlSdFVpN01MTzFOM0tFYyt3YjBhNnlLcGVMMGxtazJJQjFqWTVLSFBBbFRjNlQvSlJkQy9ZcXhITndrUT09Il0sCgogICAgInBhdGhlIjogWyJwYXRoZUAyLjAuMyIsICIiLCB7fSwgInNoYTUxMi1XVWpHY0FxUDFnUWFjb1FlK09CSnNGQTdMZDREeVh1VUlqWjVjYzc1Y0xIdko3ZHROc1R1Z3BoeElBRHdzcFMrQXJhQVVlUENLclNWdFBMRmovRjg4dz09Il0sCgogICAgInBpY29jb2xvcnMiOiBbInBpY29jb2xvcnNAMS4xLjEiLCAiIiwge30sICJzaGE1MTIteGNlSDJzbmh0YjVNOWxpcURzbUV3NTZsZTM3Nm1UWmtFWC9qRWIvUnhORnllZ051bDdlTnNsQ1hQOUZEai9MY3UwWDhLRXlNY2VQMm50cGFIckRFVkE9PSJdLAoKICAgICJwaWNvbWF0Y2giOiBbInBpY29tYXRjaEA0LjAuNCIsICIiLCB7fSwgInNoYTUxMi1RUDg4QkFLdk1hbS8zTnhINnZqMm8yMVI2TWp4WlVBZDZubHdBUy9wbkd2TjlJVkxvY0xIeEdZSXpGaGc2ZlVRKzV0aDZQNGR2NGVXOWpYM0RTSWo3QT09Il0sCgogICAgInBvc3Rjc3MiOiBbInBvc3Rjc3NAOC41LjE1IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIm5hbm9pZCI6ICJeMy4zLjEyIiwgInBpY29jb2xvcnMiOiAiXjEuMS4xIiwgInNvdXJjZS1tYXAtanMiOiAiXjEuMi4xIiB9IH0sICJzaGE1MTItRmZSOHNqZDRlbTJUNmZiM0kyTXdBSlU3SFdWTXI5emJhK2VubVFlZVdGZkNibStVT0MvMFg0RFM4WHRwVVRNd1dNR2JqS1lQN3hqZk5la3p5R21CM0E9PSJdLAoKICAgICJyZWFjdCI6IFsicmVhY3RAMTkuMi42IiwgIiIsIHt9LCAic2hhNTEyLXNmV0dHZmF2aTB4cjhQZzBzVnN5SE1BT3ppVllLZ1BMTnJTN2lnK2l2TU5iM3diQ0J3M0t4dGZsc0dCQXdEM2dZUWxFL0FFWnNUTGdUb1JyU0NqYjBRPT0iXSwKCiAgICAicmVhY3QtZGF5LXBpY2tlciI6IFsicmVhY3QtZGF5LXBpY2tlckA5LjE0LjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGRhdGUtZm5zL3R6IjogIl4xLjQuMSIsICJAdGFiYnlfYWkvaGlqcmktY29udmVydGVyIjogIjEuMC41IiwgImRhdGUtZm5zIjogIl40LjEuMCIsICJkYXRlLWZucy1qYWxhbGkiOiAiNC4xLjAtMCIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJyZWFjdCI6ICI+PTE2LjguMCIgfSB9LCAic2hhNTEyLXRCYW9EV2pQd2UwTTVwR3J1bTRIMFNSNkx5aytCTzlvSG5wOUpiS3BHS1cybWxyYU5QZ1A5Qk1mc2c1cFdwd3Jzc0FSbWVxazdZQmwyb1h1dFpUYUhBPT0iXSwKCiAgICAicmVhY3QtZG9tIjogWyJyZWFjdC1kb21AMTkuMi42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInNjaGVkdWxlciI6ICJeMC4yNy4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgInJlYWN0IjogIl4xOS4yLjYiIH0gfSwgInNoYTUxMi0wcHJNSStodkJiUGpzV254REx4bENHeU04UE42VXVXakVVQ1ltWmhPNjd4SVY5WGFzYS9yL3ZEbnErWHlxNExvMjdnOFFTYk81WXpBUnUwRDFTcHMzZz09Il0sCgogICAgInJlcXVpcmUtZGlyZWN0b3J5IjogWyJyZXF1aXJlLWRpcmVjdG9yeUAyLjEuMSIsICIiLCB7fSwgInNoYTUxMi1mR3hFSTcrd3NHOXhydmRqc3JsbUwyMk9NVFRpSFJ3QU1yb2lFZU1ncThnem9MQy9QUXI3UnNSRFNUTFVnL2JaQVp0RitUVklrSGM2LzRSSUtydWkrUT09Il0sCgogICAgInJlc2VsZWN0IjogWyJyZXNlbGVjdEA1LjIuMCIsICIiLCB7fSwgInNoYTUxMi1BZ1ozVU9abTNZbmRmcko0T1lqZ3JUN2JtQ20vMWlxa2p2RWZIL29ZanpoNlBEMnF3NFF1VDNqam5YSXJwZHQ0TVRwTVhjbE1UM2xYYm1SWStYUmFrdz09Il0sCgogICAgInJvbGxkb3duIjogWyJyb2xsZG93bkAxLjAuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAb3hjLXByb2plY3QvdHlwZXMiOiAiPTAuMTMwLjAiLCAiQHJvbGxkb3duL3BsdWdpbnV0aWxzIjogIl4xLjAuMCIgfSwgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQHJvbGxkb3duL2JpbmRpbmctYW5kcm9pZC1hcm02NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1kYXJ3aW4tYXJtNjQiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1mcmVlYnNkLXg2NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmIjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LWFybTY0LWdudSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsIjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXBwYzY0LWdudSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1zMzkweC1nbnUiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctbGludXgteDY0LWdudSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC14NjQtbXVzbCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1vcGVuaGFybW9ueS1hcm02NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy13YXNtMzItd2FzaSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjIjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLXdpbjMyLXg2NC1tc3ZjIjogIjEuMC4xIiB9LCAiYmluIjogeyAicm9sbGRvd24iOiAiYmluL2NsaS5tanMiIH0gfSwgInNoYTUxMi1YMEtRSGxqTm5Fa1dOcXFpejl6SnJHdW5oMUIwSGdPeExYdm5GcENPY2FkemN5NXFvaFozdHFNRVVnMDB2bmNvUm92WHVLM1pxQ1Q5S25uS3pvSW5GUT09Il0sCgogICAgInJ4anMiOiBbInJ4anNANy44LjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuMS4wIiB9IH0sICJzaGE1MTItZGhLZjkwM1UvUFFaWTZib05OdEFHZFdiRzg1V0FialQvMXhZb1pJQzdGQVkweVdhcE9CUVZzVnJEbDU4Vzg2Ly9lMVZwTU5CdFJWNE1hWGZkTXlTRkE9PSJdLAoKICAgICJzY2hlZHVsZXIiOiBbInNjaGVkdWxlckAwLjI3LjAiLCAiIiwge30sICJzaGE1MTItZU52K1dyVmJLdTFmM3ZiWUpUL3h0aUY1c3lBNUhQSU10ZjlJZ1kvbktnMHNXcXpBVUV2cVkveG03T2NaYy9xYWZMeC9pTzlGZ09tZVNBcDR2NXRpL1E9PSJdLAoKICAgICJzZW12ZXIiOiBbInNlbXZlckA3LjguMCIsICIiLCB7ICJiaW4iOiB7ICJzZW12ZXIiOiAiYmluL3NlbXZlci5qcyIgfSB9LCAic2hhNTEyLUFjTTdkVi81dWw0RWVrb1EyOUFnbTV2cmk4Sk5xUnlqMzlvMHFwWDZ2REYyR1pydHV0Wmw1UndnRDFYblpqaVRBZm5jc0poTUk0OFFRSDNzTjg3WU5BPT0iXSwKCiAgICAic2hhcnAiOiBbInNoYXJwQDAuMzQuNSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAaW1nL2NvbG91ciI6ICJeMS4wLjAiLCAiZGV0ZWN0LWxpYmMiOiAiXjIuMS4yIiwgInNlbXZlciI6ICJeNy43LjMiIH0sICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtZGFyd2luLWFybTY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLWRhcndpbi14NjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWRhcndpbi14NjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybSI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgtYXJtNjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1yaXNjdjY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1zMzkweCI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgteDY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4bXVzbC14NjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saW51eC1hcm0iOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgtYXJtNjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgtcHBjNjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgtcmlzY3Y2NCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC1saW51eC1zMzkweCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC1saW51eC14NjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXhtdXNsLWFybTY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLWxpbnV4bXVzbC14NjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtd2FzbTMyIjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLXdpbjMyLWFybTY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLXdpbjMyLWlhMzIiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtd2luMzIteDY0IjogIjAuMzQuNSIgfSB9LCAic2hhNTEyLU91OUk1RnQ5V05jQ2JYclU5Y01nUEJjQ0s4TGl3THFjYnl3VzN0NG9EVjM3bjFwenB1TkxzWWlBVjhlT0RuamJ0UWxTRHdaMmNVRWVRejRFNTRIbHRnPT0iXSwKCiAgICAic2hlbGwtcXVvdGUiOiBbInNoZWxsLXF1b3RlQDEuOC4zIiwgIiIsIHt9LCAic2hhNTEyLU9ibW5JRjRoWE5nMUJxaG5IbWdiREVURjhkTFBDZ2daV0Jqa1FmaFpwYnN6Wm5ZdXI1RFVsalRjQ0hpaTVMQzNKNUUweWVPLzFMSU15SCtVdkhRZ3l3PT0iXSwKCiAgICAic2lnaW5mbyI6IFsic2lnaW5mb0AyLjAuMCIsICIiLCB7fSwgInNoYTUxMi15YngwV08xLzhiU0JMRVdYWnZFZDdnTVczU24zSkZsVzNUdlgxblJFYkRMUk5RTmFlTk44V0swbWVCd1BkQWFPSTdUdFJSUkpuL0VzMXpocnJDSHU3Zz09Il0sCgogICAgInNvdXJjZS1tYXAiOiBbInNvdXJjZS1tYXBAMC42LjEiLCAiIiwge30sICJzaGE1MTItVWpnYXB1bVdsYk1oa0JnelQ3WWtjNVlYVVQ0NkYwaUt1OFNHWHEwYmN3UDVkei9oMFBsajZlbkpxanoxWmJxMmw1V2FxWW5yVmJ3V09XTXlGM0Y0N2c9PSJdLAoKICAgICJzb3VyY2UtbWFwLWpzIjogWyJzb3VyY2UtbWFwLWpzQDEuMi4xIiwgIiIsIHt9LCAic2hhNTEyLVVYV01LaExPd1ZLYjcyOElVdFFQWHhmWVUrdXNkeWJ0VXJLLzh1R0U4Q1FNdnJoT3B3dnpEQndqMFFoU0w3TVFjN3ZJc0lTQkc4VlE4K0lEUXhwZlFBPT0iXSwKCiAgICAic291cmNlLW1hcC1zdXBwb3J0IjogWyJzb3VyY2UtbWFwLXN1cHBvcnRAMC41LjIxIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImJ1ZmZlci1mcm9tIjogIl4xLjAuMCIsICJzb3VyY2UtbWFwIjogIl4wLjYuMCIgfSB9LCAic2hhNTEyLXVCSFUzTDNjenNJeVlYS1g4OGZkckdvdnhkU0NvVEdEUlo2U1lYdFNSeExaVXpIZzVQLzY2SHQ2dW9VbEh1OUVab2QraW5YaEtvM3FRZ3dYVVQveTF3PT0iXSwKCiAgICAic3RhY2tiYWNrIjogWyJzdGFja2JhY2tAMC4wLjIiLCAiIiwge30sICJzaGE1MTItMVhNSkU1ZlFvMWpHSDZZLzdlYm53UE9CRWtJRW5UNFFGMzJkNVIxK1ZYZFh2ZU0wSUJNSnQ4emZheFgxUDNRaFZ3clllKzU3Nitqa0FOdFNTMm1CYnc9PSJdLAoKICAgICJzdGQtZW52IjogWyJzdGQtZW52QDQuMS4wIiwgIiIsIHt9LCAic2hhNTEyLVJxN3liY1gyUnVDNTVyOW9hUFZFVzcveHUzdGo4dTRHZUJZSEJXQ3ljaEZ0ek1Jcjg2QTdlM1BQRUJQVDM3c0hTdEtYMytUaVgvRnIvQUNtSkxWbExRPT0iXSwKCiAgICAic3RyaW5nLXdpZHRoIjogWyJzdHJpbmctd2lkdGhANC4yLjMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZW1vamktcmVnZXgiOiAiXjguMC4wIiwgImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50IjogIl4zLjAuMCIsICJzdHJpcC1hbnNpIjogIl42LjAuMSIgfSB9LCAic2hhNTEyLXdLeVFSUXBqSjBzSXA2MkVyU1pkR3NqTUpXc2FwNW9STmloSGh1Nkc3SlZPLzlqSUI2VXlldkwrdFh1T3Fybmc4ai9jeEtUV3lXVXd2U1RyaWlaei9nPT0iXSwKCiAgICAic3RyaXAtYW5zaSI6IFsic3RyaXAtYW5zaUA2LjAuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJhbnNpLXJlZ2V4IjogIl41LjAuMSIgfSB9LCAic2hhNTEyLVkzOFZQU0hjcWtGckNwRm5ROXZ1U1htcXV1djVvWE9LcEdlVDZhR3JyM28zR2M5QWxWYTZKQmZVU09DbmJ4R0daRisvMG9vSTdLclB1VVN6dFVkVTVBPT0iXSwKCiAgICAic3R5bGVkLWpzeCI6IFsic3R5bGVkLWpzeEA1LjEuNiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjbGllbnQtb25seSI6ICIwLjAuMSIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJyZWFjdCI6ICI+PSAxNi44LjAgfHwgMTcueC54IHx8IF4xOC4wLjAtMCB8fCBeMTkuMC4wLTAiIH0gfSwgInNoYTUxMi1xU1Z5RFRlTW90ZHZRWW9IV0xOR3dSRkpIQytpK1p2ZEJSWW9zT0ZnQytXZzF2eDRmck4yL1JHL05BN1NZcXF2S05MZjM5UDJMU1JBMnB1Nm4wWFlaQT09Il0sCgogICAgInN1cHBvcnRzLWNvbG9yIjogWyJzdXBwb3J0cy1jb2xvckA4LjEuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJoYXMtZmxhZyI6ICJeNC4wLjAiIH0gfSwgInNoYTUxMi1NcFVFTjJPb2R0VXp4dktRbDcyY1VGN1JRNUVpSHNHdlNzVkcwaWE5YzVSYldHTDJDSTRDN0VwUFM4VVRCSXBsbmx6WmlOdVY1NncrRnVOeHkzdHkyUT09Il0sCgogICAgInRhaWx3aW5kLW1lcmdlIjogWyJ0YWlsd2luZC1tZXJnZUAzLjYuMCIsICIiLCB7fSwgInNoYTUxMi11eEw3cUFWUXJpcVJRUEF5SzNwajY2VnFza1dxb1ozN1BXOTRqd09Ud05mcS96OW95dTFWK2VxclpxdFIyK2ZDaVhkWU9aZS9Nb2R0OEd0dnFOenUrdz09Il0sCgogICAgInRhaWx3aW5kY3NzIjogWyJ0YWlsd2luZGNzc0A0LjMuMCIsICIiLCB7fSwgInNoYTUxMi15Nm54TUdCMW5NVzlSNms5NmU1Z2RJRnpjZkwvZ1RKUk5hcUdlczFZdmtMblBWWHpXZ2JxRkYyeUxDMFQ4Rzc3NG4yNGN4M1BlOFhyS29uaUNPQUgrUT09Il0sCgogICAgInRhcGFibGUiOiBbInRhcGFibGVAMi4zLjMiLCAiIiwge30sICJzaGE1MTItdXhjL3pwcUZnNng3Qzh2T0U3bGg2TGJkYThlRUw5em1WbS9QTGVUUEJSaGgxeENnZFdhUStKMUNVaWVHcElmbTJIZHRzVXBSditIc2hpYXNCTWNjNkE9PSJdLAoKICAgICJ0ZXJzZXIiOiBbInRlcnNlckA1LjE2LjkiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlLW1hcCI6ICJeMC4zLjIiLCAiYWNvcm4iOiAiXjguNS4wIiwgImNvbW1hbmRlciI6ICJeMi4yMC4wIiwgInNvdXJjZS1tYXAtc3VwcG9ydCI6ICJ+MC41LjIwIiB9LCAiYmluIjogeyAidGVyc2VyIjogImJpbi90ZXJzZXIiIH0gfSwgInNoYTUxMi1IUGEvRmRUQjlYR0kySDEva2VMRlpIeGw2V052QUk0WWFsSEd0RFFUbE1uSmNvcVNhYjFVd0w0bDFoR0VoczYvR21MSEJaSWcvWWdCKytqY2J6b09FZz09Il0sCgogICAgInRpbnliZW5jaCI6IFsidGlueWJlbmNoQDIuOS4wIiwgIiIsIHt9LCAic2hhNTEyLTArRFV2cVdNVmFsTG1oYTZscjRrRDhpQU1LMUh6VjAvYUtuQ3RXYjl2OTY0MVRuUC9NRmI3UGMyYnhveFFqVFhBRXJyeVhWZ1VPZnYyWXFObGxxR2VnPT0iXSwKCiAgICAidGlueWV4ZWMiOiBbInRpbnlleGVjQDEuMS4yIiwgIiIsIHt9LCAic2hhNTEyLWRBcVNxRS9SYWJwQktJOCtoMjZHZkxxNlZiM0pWWHMzMFhZUWpkTWphai9jMnRTOElZWU1iSXpQNTk5S3RSajdjNTcvd1lBcGIzUWpnUmdYbXJDdWtBPT0iXSwKCiAgICAidGlueWdsb2JieSI6IFsidGlueWdsb2JieUAwLjIuMTYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZmRpciI6ICJeNi41LjAiLCAicGljb21hdGNoIjogIl40LjAuNCIgfSB9LCAic2hhNTEyLXBuOTlWaG9BQ1lSOG5GSGh4cWl4K3V2c2JYaW5lQWFzV201b2pYb044eEV3SzVLZDMvVHJoTm4xd0J5dUQ1MlV4V1JMeThwdStrUk1uaUVpNkVxOVpnPT0iXSwKCiAgICAidGlueXJhaW5ib3ciOiBbInRpbnlyYWluYm93QDMuMS4wIiwgIiIsIHt9LCAic2hhNTEyLUJmK0lMbUJncmV0VXJkSnh6WE0wU2dYTFozWGZpYVV1T2ovSUtRSHVUWGlwKzA1WG4rdXlFWWRWZzBrWURpcFRCY0xyQ1Z5VXpBUHo3UW1BcmIwbW13PT0iXSwKCiAgICAidHJlZS1raWxsIjogWyJ0cmVlLWtpbGxAMS4yLjIiLCAiIiwgeyAiYmluIjogeyAidHJlZS1raWxsIjogImNsaS5qcyIgfSB9LCAic2hhNTEyLUwwT3JwaThxR3BSRy8vTmQrSDkwdkZCKzNpSG51ZTF6U1NHbU5PT0NoMUdMSjdyVUtWd1YySHZpanBoR1FTMlVtaFVaZXdTOVZndnhZSWRncitmRzFBPT0iXSwKCiAgICAidHNsaWIiOiBbInRzbGliQDIuOC4xIiwgIiIsIHt9LCAic2hhNTEyLW9KRnU5NEhRYitLVmR1U1VRTDd3bnBtcW5mbUxzT0EvbkFoNmI2RUgwd0NFb0swL21QZVhVNmMzd0tEVjgzTWtPdUhQUkh0U1hLS1U5OUlCYXpTLzJ3PT0iXSwKCiAgICAidHlwZXNjcmlwdCI6IFsidHlwZXNjcmlwdEA1LjkuMyIsICIiLCB7ICJiaW4iOiB7ICJ0c2MiOiAiYmluL3RzYyIsICJ0c3NlcnZlciI6ICJiaW4vdHNzZXJ2ZXIiIH0gfSwgInNoYTUxMi1qbDF2WnpQRGluTHI5ZVV0M0ovdDdWNkZnTkV3OVFqdkJQZHlzejlLZlFERDQxZlFyQzJZNHZLUWRpYVVwRlQ0YlhsYjFSSGhMcHA4d3RtNk01VGdTdz09Il0sCgogICAgInVuZGljaS10eXBlcyI6IFsidW5kaWNpLXR5cGVzQDYuMjEuMCIsICIiLCB7fSwgInNoYTUxMi1pd0RacWcwUUFHcmc5UmF2NUg0bjBNNjRjM21rUjU5Y0o2d1FwKzdDNG5JMGdzbUV4YWVkYVlMTk80NGVUNEF0QkJ3amJUaUdQTWx0Mk1kMFQ5SDlKUT09Il0sCgogICAgInVzZS1zeW5jLWV4dGVybmFsLXN0b3JlIjogWyJ1c2Utc3luYy1leHRlcm5hbC1zdG9yZUAxLjYuMCIsICIiLCB7ICJwZWVyRGVwZW5kZW5jaWVzIjogeyAicmVhY3QiOiAiXjE2LjguMCB8fCBeMTcuMC4wIHx8IF4xOC4wLjAgfHwgXjE5LjAuMCIgfSB9LCAic2hhNTEyLVBwNkdTd0dQL05yUElyeFZGQUlrT1FleXc4bEZlbk9IaWpRV2tVVHJEdnJGNEFMcXlsUDJDL0tDa2VTOWRwVU0zS3ZZUlFobmE1dnQ3SUw5NStaUTl3PT0iXSwKCiAgICAidml0ZSI6IFsidml0ZUA4LjAuMTMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAibGlnaHRuaW5nY3NzIjogIl4xLjMyLjAiLCAicGljb21hdGNoIjogIl40LjAuNCIsICJwb3N0Y3NzIjogIl44LjUuMTQiLCAicm9sbGRvd24iOiAiMS4wLjEiLCAidGlueWdsb2JieSI6ICJeMC4yLjE2IiB9LCAib3B0aW9uYWxEZXBlbmRlbmNpZXMiOiB7ICJmc2V2ZW50cyI6ICJ+Mi4zLjMiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL25vZGUiOiAiXjIwLjE5LjAgfHwgPj0yMi4xMi4wIiwgIkB2aXRlanMvZGV2dG9vbHMiOiAiXjAuMS4xOCIsICJlc2J1aWxkIjogIl4wLjI3LjAgfHwgXjAuMjguMCIsICJqaXRpIjogIj49MS4yMS4wIiwgImxlc3MiOiAiXjQuMC4wIiwgInNhc3MiOiAiXjEuNzAuMCIsICJzYXNzLWVtYmVkZGVkIjogIl4xLjcwLjAiLCAic3R5bHVzIjogIj49MC41NC44IiwgInN1Z2Fyc3MiOiAiXjUuMC4wIiwgInRlcnNlciI6ICJeNS4xNi4wIiwgInRzeCI6ICJeNC44LjEiLCAieWFtbCI6ICJeMi40LjIiIH0sICJvcHRpb25hbFBlZXJzIjogWyJAdHlwZXMvbm9kZSIsICJAdml0ZWpzL2RldnRvb2xzIiwgImVzYnVpbGQiLCAiaml0aSIsICJsZXNzIiwgInNhc3MiLCAic2Fzcy1lbWJlZGRlZCIsICJzdHlsdXMiLCAic3VnYXJzcyIsICJ0ZXJzZXIiLCAidHN4IiwgInlhbWwiXSwgImJpbiI6IHsgInZpdGUiOiAiYmluL3ZpdGUuanMiIH0gfSwgInNoYTUxMi1NRnRqQllnem1TeG1nQTRSQWZqSXlYV3BHZTFvQUxuamdVVHp6VjdRTHgvVEt4Q3pqdE1INkZkOS9lVksrNUZnMXFOb3o1VkF3c21Ncy9Ob2ZybUp2dz09Il0sCgogICAgInZpdGVzdCI6IFsidml0ZXN0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvZXhwZWN0IjogIjQuMS42IiwgIkB2aXRlc3QvbW9ja2VyIjogIjQuMS42IiwgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6ICI0LjEuNiIsICJAdml0ZXN0L3J1bm5lciI6ICI0LjEuNiIsICJAdml0ZXN0L3NuYXBzaG90IjogIjQuMS42IiwgIkB2aXRlc3Qvc3B5IjogIjQuMS42IiwgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAiZXMtbW9kdWxlLWxleGVyIjogIl4yLjAuMCIsICJleHBlY3QtdHlwZSI6ICJeMS4zLjAiLCAibWFnaWMtc3RyaW5nIjogIl4wLjMwLjIxIiwgIm9idWciOiAiXjIuMS4xIiwgInBhdGhlIjogIl4yLjAuMyIsICJwaWNvbWF0Y2giOiAiXjQuMC4zIiwgInN0ZC1lbnYiOiAiXjQuMC4wLXJjLjEiLCAidGlueWJlbmNoIjogIl4yLjkuMCIsICJ0aW55ZXhlYyI6ICJeMS4wLjIiLCAidGlueWdsb2JieSI6ICJeMC4yLjE1IiwgInRpbnlyYWluYm93IjogIl4zLjEuMCIsICJ2aXRlIjogIl42LjAuMCB8fCBeNy4wLjAgfHwgXjguMC4wIiwgIndoeS1pcy1ub2RlLXJ1bm5pbmciOiAiXjIuMy4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBlZGdlLXJ1bnRpbWUvdm0iOiAiKiIsICJAb3BlbnRlbGVtZXRyeS9hcGkiOiAiXjEuOS4wIiwgIkB0eXBlcy9ub2RlIjogIl4yMC4wLjAgfHwgXjIyLjAuMCB8fCA+PTI0LjAuMCIsICJAdml0ZXN0L2Jyb3dzZXItcGxheXdyaWdodCI6ICI0LjEuNiIsICJAdml0ZXN0L2Jyb3dzZXItcHJldmlldyI6ICI0LjEuNiIsICJAdml0ZXN0L2Jyb3dzZXItd2ViZHJpdmVyaW8iOiAiNC4xLjYiLCAiQHZpdGVzdC9jb3ZlcmFnZS1pc3RhbmJ1bCI6ICI0LjEuNiIsICJAdml0ZXN0L2NvdmVyYWdlLXY4IjogIjQuMS42IiwgIkB2aXRlc3QvdWkiOiAiNC4xLjYiLCAiaGFwcHktZG9tIjogIioiLCAianNkb20iOiAiKiIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkBlZGdlLXJ1bnRpbWUvdm0iLCAiQG9wZW50ZWxlbWV0cnkvYXBpIiwgIkB0eXBlcy9ub2RlIiwgIkB2aXRlc3QvYnJvd3Nlci1wbGF5d3JpZ2h0IiwgIkB2aXRlc3QvYnJvd3Nlci1wcmV2aWV3IiwgIkB2aXRlc3QvYnJvd3Nlci13ZWJkcml2ZXJpbyIsICJAdml0ZXN0L2NvdmVyYWdlLWlzdGFuYnVsIiwgIkB2aXRlc3QvY292ZXJhZ2UtdjgiLCAiQHZpdGVzdC91aSIsICJoYXBweS1kb20iLCAianNkb20iXSwgImJpbiI6IHsgInZpdGVzdCI6ICJ2aXRlc3QubWpzIiB9IH0sICJzaGE1MTItNmx2amJTM3A5YjRDcmRDbWd1emJoMi80dW9YaEdFMnE3MVI0T1g1c3FGOVIxYm85WGQ2ZkdyTUFmdnA1d25DemxCbkZWZENPcDZvbnVUUVZibzhpVVE9PSJdLAoKICAgICJ3aHktaXMtbm9kZS1ydW5uaW5nIjogWyJ3aHktaXMtbm9kZS1ydW5uaW5nQDIuMy4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInNpZ2luZm8iOiAiXjIuMC4wIiwgInN0YWNrYmFjayI6ICIwLjAuMiIgfSwgImJpbiI6IHsgIndoeS1pcy1ub2RlLXJ1bm5pbmciOiAiY2xpLmpzIiB9IH0sICJzaGE1MTItaFVybWFXQmRWRGN4dllxbnloMDl6dW5LelJPV2piWlRpTnk4ZEJFamtTN2VoRURRaWJYSjdYdmxtdGJ3dVRjbFVpSXlOK0N5WFFENFZta284Zk5tOHc9PSJdLAoKICAgICJ3cmFwLWFuc2kiOiBbIndyYXAtYW5zaUA3LjAuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJhbnNpLXN0eWxlcyI6ICJeNC4wLjAiLCAic3RyaW5nLXdpZHRoIjogIl40LjEuMCIsICJzdHJpcC1hbnNpIjogIl42LjAuMCIgfSB9LCAic2hhNTEyLVlWR0lqMmthbUxTVHh3Nk5zWmpvQnhmU3dzbjB5Y2Rlc21jNHArUTIxYzV6UHVaMXBsK05meFZkeFB0ZEh2bU5WT1E2WFNZRzRBVXR5dC9GaTdEMTZRPT0iXSwKCiAgICAieTE4biI6IFsieTE4bkA1LjAuOCIsICIiLCB7fSwgInNoYTUxMi0wcGZGemVnZURXSkhKSUFtVExSUDJEd0hqZEY1czdqbzl0dXp0ZFF4QWhJTkNkdlMrM25HSU5xUGQwMEFwaHFKUi8wTGhBTlVTNi8rN1NDYjk4WU9mQT09Il0sCgogICAgInlhbWwiOiBbInlhbWxAMi45LjAiLCAiIiwgeyAiYmluIjogeyAieWFtbCI6ICJiaW4ubWpzIiB9IH0sICJzaGE1MTItMkF2aE5YM21iOHpkNlp5N0lOVHRTcGwxRjE1SFc2V25xajBzcldsa0tMY3BZbC9nTUlNSml5dUdxMktlSTJZRnhVUGpkbEIrM0xjMTBzZU1MdEw0Y0E9PSJdLAoKICAgICJ5YXJncyI6IFsieWFyZ3NAMTcuNy4yIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImNsaXVpIjogIl44LjAuMSIsICJlc2NhbGFkZSI6ICJeMy4xLjEiLCAiZ2V0LWNhbGxlci1maWxlIjogIl4yLjAuNSIsICJyZXF1aXJlLWRpcmVjdG9yeSI6ICJeMi4xLjEiLCAic3RyaW5nLXdpZHRoIjogIl40LjIuMyIsICJ5MThuIjogIl41LjAuNSIsICJ5YXJncy1wYXJzZXIiOiAiXjIxLjEuMSIgfSB9LCAic2hhNTEyLTdkU3p6UlErK0NLbk5JL2tyS25ZUlY3SktLUFVYTUVoNjFzb2FIS2c5bXJXRWh6RldoRm54UHhHbCs2OWNEMU91NjNDMTNOVVBDbm1JY3J2cUN1TTZ3PT0iXSwKCiAgICAieWFyZ3MtcGFyc2VyIjogWyJ5YXJncy1wYXJzZXJAMjEuMS4xIiwgIiIsIHt9LCAic2hhNTEyLXRWcHNKVzdEZGplY0FpRnBiSUIxZTNxeElRc0U2Tm9QYzUvZVRkcmJiSUM0aDBMVnNXaG5vYTNnK20ySGNsQkl1akh6c3haNFZKVkErR1V1YzIvTEJ3PT0iXSwKCiAgICAiem9kIjogWyJ6b2RANC40LjMiLCAiIiwge30sICJzaGE1MTIteXRFTkZqSUpGbDJVd1lnbGRlMmpjaFcySHdtNEdKRkxEaVNYV2RUckpRQklOOUZjeXA3bjREaHhKRWlXTkFKTVYxL0JxV2ZXL2trZzcxVURjSEp5VFE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQGVtbmFwaS9jb3JlIjogWyJAZW1uYXBpL2NvcmVAMS4xMC4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvd2FzaS10aHJlYWRzIjogIjEuMi4xIiwgInRzbGliIjogIl4yLjQuMCIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTIteXE2T2tKNHA4MkNBZlBsMHU5bVFlYlFIS1BKa1k3V3JJdWsyMDVjVFluWWUrazJaOFlCaDExRnJiUkcvSDZpaGlycWNhY09nbDJCSU84b3lNUUxlWHc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQGVtbmFwaS9ydW50aW1lIjogWyJAZW1uYXBpL3J1bnRpbWVAMS4xMC4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRzbGliIjogIl4yLjQuMCIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItZXd2WWxrODZ4VW9HSTB6UVJOcS9tQysxNlIxUWVEbEtReTIxS2kzb1NZWE5nTGI0NUdWMVA2QTBNKy9zNm55Q3VORHFlNVZwYVk4NEJ6WEd3VmJ3RkE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQGVtbmFwaS93YXNpLXRocmVhZHMiOiBbIkBlbW5hcGkvd2FzaS10aHJlYWRzQDEuMi4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRzbGliIjogIl4yLjQuMCIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItdVRJSTdPWUYrL01lcy9NcmNJT1lwNXlPdFNNTEJXU0lvTFBwY2d3aXBvaUtibGk2azMyMnRjb0ZzeG9JSXhQRHFXMDFTUUdBZ2tvNEV6WmkyQk52Mnc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQG5hcGktcnMvd2FzbS1ydW50aW1lIjogWyJAbmFwaS1ycy93YXNtLXJ1bnRpbWVAMS4xLjQiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHR5YnlzL3dhc20tdXRpbCI6ICJeMC4xMC4xIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvY29yZSI6ICJeMS43LjEiLCAiQGVtbmFwaS9ydW50aW1lIjogIl4xLjcuMSIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItM05RTk5nQTFZU2xKYi9rTUgxaWxkQVNQOUhXNy83a1luUkkyc3pXSmFvZmFTMWhXbWJHSTRIK2QzKzIyYUd6WFhOOUlKK24rR2lGVmNHaXBKUDE4b3c9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQHR5YnlzL3dhc20tdXRpbCI6IFsiQHR5YnlzL3dhc20tdXRpbEAwLjEwLjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9LCAiYnVuZGxlZCI6IHRydWUgfSwgInNoYTUxMi1Sb0J2SjJYMHd1S2xXRklqcndmZkd3MUlxWkhLUXF6SWNoS2FhZFpaZm5OcHNBWXAybU0waDM2SnRQQ2pOREFIR2dZZXovMTV1TUJwZkd3Y2hoaU1nZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS13YXNtMzItd2FzaS90c2xpYiI6IFsidHNsaWJAMi44LjEiLCAiIiwgeyAiYnVuZGxlZCI6IHRydWUgfSwgInNoYTUxMi1vSkZ1OTRIUWIrS1ZkdVNVUUw3d25wbXFuZm1Mc09BL25BaDZiNkVIMHdDRW9LMC9tUGVYVTZjM3dLRFY4M01rT3VIUFJIdFNYS0tVOTlJQmF6Uy8ydz09Il0sCgogICAgImNoYWxrL3N1cHBvcnRzLWNvbG9yIjogWyJzdXBwb3J0cy1jb2xvckA3LjIuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJoYXMtZmxhZyI6ICJeNC4wLjAiIH0gfSwgInNoYTUxMi1xcENBdlJsOXN0dU9IdmVLc243SG5jSlJ2djUwMXFJYWNLelFsTy8rTHd4YzkrMHEyd0x5djREZnZ0ODAvRFBuMnBxT0JzSmREaW9nWEdSOStPdndSdz09Il0sCgogICAgIm5leHQvcG9zdGNzcyI6IFsicG9zdGNzc0A4LjQuMzEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAibmFub2lkIjogIl4zLjMuNiIsICJwaWNvY29sb3JzIjogIl4xLjAuMCIsICJzb3VyY2UtbWFwLWpzIjogIl4xLjAuMiIgfSB9LCAic2hhNTEyLVBTMDhJYm9pYTltdHMvMnlnVjNlTHBZNWdoblVjZkxWL0VYVE9XMUUycVl4SktHR0JVdE5qTjc2RllIbk1zMzZSbUFSbjQxYkMwQVptbityUjBPVnBRPT0iXSwKICB9Cn0K" }, { "path": "metadata.json", "kind": "text", "content": '{\n "id": "restaurant",\n "name": "Restaurant",\n "tagline": "Menu-driven storefront with reservations and table-service support.",\n "industry": "food",\n "tags": ["food", "restaurant", "reservations"],\n "stability": "stable",\n "schemaType": "Restaurant",\n "mock": {\n "seedName": "restaurant",\n "seedBusinessId": "bus_mamas_kitchen"\n }\n}\n' }, { "path": "next.config.ts", "kind": "text", "content": 'import type { NextConfig } from "next";\n\n// Same-origin proxy target for the storefront API. The public key\n// decides: a real `cpk_live_\u2026` / `cpk_test_\u2026` only resolves against\n// hosted Cimplify, so browser cart writes go to the same place the\n// server catalogue reads come from. Anything else (`mock-dev`, empty)\n// falls back to the local `cimplify dev` mock in dev.\nconst publicKey = process.env.NEXT_PUBLIC_CIMPLIFY_PUBLIC_KEY?.trim() ?? "";\nconst keyTargetsHostedCimplify =\n publicKey.startsWith("cpk_live_") || publicKey.startsWith("cpk_test_");\nconst STOREFRONT_URL =\n process.env.NODE_ENV === "production" || keyTargetsHostedCimplify\n ? "https://storefronts.cimplify.io"\n : "http://127.0.0.1:8787";\n\nif (STOREFRONT_URL === "http://127.0.0.1:8787") {\n console.warn(\n "[cimplify] next.config resolved the local storefront API URL; production deploys must run with NODE_ENV=production.",\n );\n}\n\n// Cache Components (\'use cache\' + cacheTag/cacheLife) require Node-specific\n// setTimeout atomicity and serialize a postponed state that routinely exceeds\n// CF Workers\' 128MB zlib limit. We\'re on Cloudflare Workers via opennext, so\n// we stay on Next 16\'s "Previous Model" \u2014 `fetch.next.{revalidate,tags}` via\n// the SDK\'s `cacheOptions`, plus `export const revalidate` per page. See\n// https://nextjs.org/docs/app/guides/caching-without-cache-components.\nconst nextConfig: NextConfig = {\n async redirects() {\n return [\n { source: "/login", destination: "/account", permanent: false },\n { source: "/signup", destination: "/account", permanent: false },\n ];\n },\n async rewrites() {\n return [\n { source: "/api/v1/:path*", destination: `${STOREFRONT_URL}/api/v1/:path*` },\n { source: "/img/:path*", destination: `${STOREFRONT_URL}/img/:path*` },\n { source: "/elements/:path*", destination: `${STOREFRONT_URL}/elements/:path*` },\n { source: "/_mock/:path*", destination: `${STOREFRONT_URL}/_mock/:path*` },\n ];\n },\n images: {\n loader: "custom",\n loaderFile: "./lib/cimplify-loader.ts",\n remotePatterns: [\n { protocol: "http", hostname: "127.0.0.1", port: "8787", pathname: "/img/**" },\n { protocol: "http", hostname: "localhost", port: "8787", pathname: "/img/**" },\n { protocol: "http", hostname: "localhost", port: "3000", pathname: "/img/**" },\n { protocol: "https", hostname: "loremflickr.com", pathname: "/**" },\n { protocol: "https", hostname: "images.unsplash.com", pathname: "/**" },\n { protocol: "https", hostname: "static-tmp.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "storefrontassetscdn.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "cdn.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "res.cloudinary.com", pathname: "/cimplify/**" },\n ],\n },\n};\n\nexport default nextConfig;\n' }, { "path": "CLAUDE.md", "kind": "text", "content": "# CLAUDE.md\n\nThis project was scaffolded from a Cimplify storefront template (`cimplify init`).\n\n## Read these first\n\n- **`AGENTS.md`** at the project root \u2014 the file \u2194 `brand.X` field map for *this template's* industry, plus the architectural rules.\n- **`.claude/skills/cimplify-storefront/SKILL.md`** \u2014 the playbook for common tasks (rebrand, add a section, wire a Server Action, deploy, eject a component). Invoke it whenever you're asked to change content, palette, copy, or routing.\n\n## The two-line summary\n\n1. **Edit `lib/brand.ts`** for any visible string.\n2. **Edit `app/globals.css` `@theme` block** for any palette / radius / font change.\n\nThat covers ~95% of what merchants ask for. For anything else, follow the `cimplify-storefront` skill.\n\n## Don't do\n\n- Hardcode strings in pages or components.\n- Enable `cacheComponents: true` in `next.config.ts` \u2014 we're on Cloudflare Workers, where `'use cache'` postponed state blows past CF's 128MB zlib limit. This template stays on Next 16's \"Previous Model\" (ISR): `export const revalidate` per page + `cacheOptions: { revalidate, tags }` on SDK reads.\n- Add `'use cache'`, `cacheTag`, or `cacheLife` anywhere. Use the SDK's `cacheOptions` instead.\n- Use `unstable_cache` \u2014 it's gone in Next 16. Use SDK `cacheOptions` or `fetch.next.{revalidate,tags}`.\n- Run `bun test` (Bun's `vi` shim is incomplete) \u2014 use `bun run test:run`.\n" }, { "path": "app/about/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `About \u2014 ${brand.name}`,\n description: brand.description,\n};\n\nexport default function AboutPage() {\n const a = brand.about;\n const titleParts = a.title.split("\\n");\n return (\n <article className="max-w-3xl mx-auto px-6 sm:px-8 py-16">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2">\n {a.eyebrow}\n </p>\n <h1 className="font-serif text-[clamp(2.25rem,5vw,3.5rem)] font-semibold mb-6 -tracking-[0.02em]">\n {titleParts.map((line, i) => (\n <span key={i}>\n {line}\n {i < titleParts.length - 1 && <br />}\n </span>\n ))}\n </h1>\n <div className="prose prose-lg max-w-none space-y-5 text-foreground/90 leading-relaxed">\n {a.paragraphs.map((p, i) => (\n <p key={i}>{p}</p>\n ))}\n {a.sections.map((s) => (\n <div key={s.heading}>\n <h2 className="font-serif text-3xl font-semibold mt-10 mb-3">{s.heading}</h2>\n <p>{s.body}</p>\n </div>\n ))}\n </div>\n </article>\n );\n}\n' }, { "path": "app/llms.txt/route.ts", "kind": "text", "content": 'import { getServerClient, tags, type Product } from "@cimplify/sdk/server";\nimport { brand } from "@/lib/brand";\nimport { getSiteUrl } from "@/lib/site-url";\n\nexport const revalidate = 3600;\n\nasync function buildLlmsTxt(SITE_URL: string): Promise<string> {\n const client = getServerClient();\n const [productsRes, categoriesRes, collectionsRes] = await Promise.all([\n client.catalogue.getProducts(\n { limit: 500 },\n { cacheOptions: { revalidate: 3600, tags: [tags.products()] } },\n ),\n client.catalogue.getCategories({\n cacheOptions: { revalidate: 3600, tags: [tags.categories()] },\n }),\n client.catalogue.getCollections({\n cacheOptions: { revalidate: 3600, tags: [tags.collections()] },\n }),\n ]);\n\n const products: Product[] = productsRes.ok ? productsRes.value.items : [];\n const categories = categoriesRes.ok ? categoriesRes.value : [];\n const collections = collectionsRes.ok ? collectionsRes.value : [];\n\n const lines: string[] = [];\n lines.push(`# ${brand.name}`);\n lines.push("");\n lines.push(`> ${brand.llms.summary}`);\n lines.push("");\n lines.push("## Browse");\n lines.push(`- [Home](${SITE_URL}/)`);\n lines.push(`- [Shop](${SITE_URL}/shop): Full menu with filter and sort.`);\n\n if (categories.length > 0) {\n lines.push("");\n lines.push("## Categories");\n for (const c of categories) {\n lines.push(\n `- [${c.name}](${SITE_URL}/categories/${c.slug})${c.description ? `: ${c.description}` : ""}`,\n );\n }\n }\n\n if (collections.length > 0) {\n lines.push("");\n lines.push("## Collections");\n for (const c of collections) {\n lines.push(\n `- [${c.name}](${SITE_URL}/collections/${c.slug})${c.description ? `: ${c.description}` : ""}`,\n );\n }\n }\n\n if (products.length > 0) {\n lines.push("");\n lines.push("## Products");\n for (const p of products) {\n const slug = p.slug ?? p.id;\n const price = `${brand.currency} ${p.default_price}`;\n const desc = p.description ? ` \u2014 ${p.description.replace(/\\s+/g, " ").slice(0, 200)}` : "";\n lines.push(`- [${p.name}](${SITE_URL}/shop?product=${slug}) (${price})${desc}`);\n }\n }\n\n lines.push("");\n lines.push("## Information");\n lines.push(`- [About](${SITE_URL}/about)`);\n lines.push(`- [FAQ](${SITE_URL}/faq)`);\n lines.push(`- [Terms of Service](${SITE_URL}/terms)`);\n lines.push(`- [Privacy Policy](${SITE_URL}/privacy)`);\n lines.push(`- [Sitemap (XML)](${SITE_URL}/sitemap.xml)`);\n lines.push("");\n lines.push("## Contact");\n lines.push(`- Email: ${brand.contact.email}`);\n lines.push(`- Phone: ${brand.contact.phone}`);\n lines.push(`- Address: ${brand.contact.address}`);\n\n return lines.join("\\n") + "\\n";\n}\n\n/**\n * `/llms.txt` \u2014 machine-readable site index for LLMs (per llmstxt.org).\n * Lets coding agents and chat assistants find products, categories, and\n * support pages without scraping HTML. Plain Markdown so it streams cheaply\n * into context windows.\n */\nexport async function GET(): Promise<Response> {\n const body = await buildLlmsTxt(await getSiteUrl());\n return new Response(body, {\n headers: {\n "Content-Type": "text/plain; charset=utf-8",\n "Cache-Control": "public, max-age=0, s-maxage=3600, stale-while-revalidate=86400",\n },\n });\n}\n' }, { "path": "app/contact/contact-form.tsx", "kind": "text", "content": `"use client";
|
|
2250
2250
|
|
|
2251
2251
|
import { useState } from "react";
|
|
2252
2252
|
|
|
@@ -2976,7 +2976,7 @@ export const brand: Brand = {
|
|
|
2976
2976
|
* the root layout prerenderable.
|
|
2977
2977
|
*/
|
|
2978
2978
|
export const SITE_URL = "https://example.com";
|
|
2979
|
-
` }, { "path": "lib/site-url.ts", "kind": "text", "content": 'import { SITE_URL } from "./site.config";\n\n/** Canonical absolute URL for this storefront. */\nexport async function getSiteUrl(): Promise<string> {\n return SITE_URL;\n}\n' }, { "path": "lib/cimplify-loader.ts", "kind": "text", "content": 'import type { ImageLoader } from "next/image";\n\nimport { assetUrl, isCimplifyAsset } from "@cimplify/sdk";\n\nconst cdnBase = process.env.NEXT_PUBLIC_CIMPLIFY_CDN_URL?.trim() || undefined;\n\nconst cimplifyImageLoader: ImageLoader = ({ src, width, quality }) => {\n if (isCimplifyAsset(src, cdnBase)) {\n return assetUrl(src, {\n base: cdnBase,\n w: width,\n quality,\n format: "auto",\n });\n }\n return src;\n};\n\nexport default cimplifyImageLoader;\n' }, { "path": "lib/cart.ts", "kind": "text", "content": '"use client";\n\nimport { useCart } from "@cimplify/sdk/react";\n\n/**\n * Reactive cart count for the header pill. Subscribes to the SDK cart\n * state \u2014 updates immediately on add / remove / quantity change.\n */\nexport function useCartCount(): { count: number } {\n const { itemCount } = useCart();\n return { count: itemCount };\n}\n' }, { "path": ".gitignore", "kind": "text", "content": "node_modules\n.next\n.open-next\nout\n.env\n.env.local\n.env*.local\n.DS_Store\n*.tsbuildinfo\nnext-env.d.ts\n" }, { "path": "package.json", "kind": "text", "content": '{\n "name": "__STOREFRONT_NAME__",\n "private": true,\n "version": "0.0.0",\n "scripts": {\n "dev": "concurrently -k -n mock,next -c blue,magenta \\"cimplify-mock --seed default --quiet\\" \\"next dev\\"",\n "dev:storefront": "next dev",\n "dev:mock": "cimplify-mock --seed default",\n "build": "next build",\n "start": "next start",\n "typecheck": "tsc --noEmit",\n "test": "vitest",\n "test:run": "vitest run",\n "check:brand": "vitest run __tests__/brand.test.ts",\n "check:cart": "vitest run __tests__/cart-flow.test.ts",\n "check:contract": "vitest run __tests__/contract.test.ts",\n "check": "bun run typecheck && bun run test:run"\n },\n "dependencies": {\n "@cimplify/sdk": "^0.56.0",\n "next": "^16.2.6",\n "react": "^19.0.0",\n "react-dom": "^19.0.0"\n },\n "devDependencies": {\n "@tailwindcss/postcss": "^4.2.4",\n "@types/node": "^22.10.0",\n "@types/react": "^19.0.0",\n "@types/react-dom": "^19.0.0",\n "concurrently": "^9.0.0",\n "tailwindcss": "^4.2.4",\n "typescript": "^5.9.3",\n "vitest": "^4.1.5"\n }\n}\n' }, { "path": "bun.lock", "kind": "binary", "content": "ewogICJsb2NrZmlsZVZlcnNpb24iOiAxLAogICJjb25maWdWZXJzaW9uIjogMSwKICAid29ya3NwYWNlcyI6IHsKICAgICIiOiB7CiAgICAgICJuYW1lIjogIl9fU1RPUkVGUk9OVF9OQU1FX18iLAogICAgICAiZGVwZW5kZW5jaWVzIjogewogICAgICAgICJAY2ltcGxpZnkvc2RrIjogIl4wLjU0LjAiLAogICAgICAgICJuZXh0IjogIl4xNi4yLjYiLAogICAgICAgICJyZWFjdCI6ICJeMTkuMC4wIiwKICAgICAgICAicmVhY3QtZG9tIjogIl4xOS4wLjAiLAogICAgICB9LAogICAgICAiZGV2RGVwZW5kZW5jaWVzIjogewogICAgICAgICJAdGFpbHdpbmRjc3MvcG9zdGNzcyI6ICJeNC4yLjQiLAogICAgICAgICJAdHlwZXMvbm9kZSI6ICJeMjIuMTAuMCIsCiAgICAgICAgIkB0eXBlcy9yZWFjdCI6ICJeMTkuMC4wIiwKICAgICAgICAiQHR5cGVzL3JlYWN0LWRvbSI6ICJeMTkuMC4wIiwKICAgICAgICAiY29uY3VycmVudGx5IjogIl45LjAuMCIsCiAgICAgICAgInRhaWx3aW5kY3NzIjogIl40LjIuNCIsCiAgICAgICAgInR5cGVzY3JpcHQiOiAiXjUuOS4zIiwKICAgICAgICAidml0ZXN0IjogIl40LjEuNSIsCiAgICAgIH0sCiAgICB9LAogIH0sCiAgInBhY2thZ2VzIjogewogICAgIkBhbGxvYy9xdWljay1scnUiOiBbIkBhbGxvYy9xdWljay1scnVANS4yLjAiLCAiIiwge30sICJzaGE1MTItVXJjQUJCKzRiVXJGQUJ3Ymx1VElCRXJYd3Zic1UvVjdUWldmbWJnSmZia3dpQnV6aVM5Z3hkT0RVeXVpZWNmZEdRODVqZ2xNVzZqdVMzK3o1VHNLTHc9PSJdLAoKICAgICJAYmFiZWwvcnVudGltZSI6IFsiQGJhYmVsL3J1bnRpbWVANy4yOS4yIiwgIiIsIHt9LCAic2hhNTEyLUppRFNoSDQ1ektIV3lHZTRaTlZSckNqQno4Tmg5VE1tWkcxa2g0UVRLOGhDQlRXQmk4RGEraTdzMWZKdzcvbFlwTTRjY2VwU05mcXpaL1F2QUJCaTVnPT0iXSwKCiAgICAiQGJhc2UtdWkvcmVhY3QiOiBbIkBiYXNlLXVpL3JlYWN0QDEuNS4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBiYWJlbC9ydW50aW1lIjogIl43LjI5LjIiLCAiQGJhc2UtdWkvdXRpbHMiOiAiMC4yLjkiLCAiQGZsb2F0aW5nLXVpL3JlYWN0LWRvbSI6ICJeMi4xLjgiLCAiQGZsb2F0aW5nLXVpL3V0aWxzIjogIl4wLjIuMTEiLCAidXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUiOiAiXjEuNi4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBkYXRlLWZucy90eiI6ICJeMS4yLjAiLCAiQHR5cGVzL3JlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgImRhdGUtZm5zIjogIl40LjAuMCIsICJyZWFjdCI6ICJeMTcgfHwgXjE4IHx8IF4xOSIsICJyZWFjdC1kb20iOiAiXjE3IHx8IF4xOCB8fCBeMTkiIH0sICJvcHRpb25hbFBlZXJzIjogWyJAZGF0ZS1mbnMvdHoiLCAiQHR5cGVzL3JlYWN0IiwgImRhdGUtZm5zIl0gfSwgInNoYTUxMi16MWdTQWxjZWQxeVkraU0rbUhERXRJa0Q4VUkzRWJzNTJNdUJQeHZWNmY1aFJ1dGsreHZDSC93dUI3aERxRHpLOUpHNUZvTXo1bmhycXRTczF3anQxQT09Il0sCgogICAgIkBiYXNlLXVpL3V0aWxzIjogWyJAYmFzZS11aS91dGlsc0AwLjIuOSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYmFiZWwvcnVudGltZSI6ICJeNy4yOS4yIiwgIkBmbG9hdGluZy11aS91dGlscyI6ICJeMC4yLjExIiwgInJlc2VsZWN0IjogIl41LjEuMSIsICJ1c2Utc3luYy1leHRlcm5hbC1zdG9yZSI6ICJeMS42LjAiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL3JlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgInJlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgInJlYWN0LWRvbSI6ICJeMTcgfHwgXjE4IHx8IF4xOSIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkB0eXBlcy9yZWFjdCJdIH0sICJzaGE1MTIteC9QRERDWXpvcVBwanJkeWIzVmN5eWxUSTJJalVYRXRZREdpNWZvaDdLc25tTkpJSWFWd0EyR0xnREgxZHBzMUdnWGlKYkE2MGhNK0F5dVRmUXpJdnc9PSJdLAoKICAgICJAY2ltcGxpZnkvc2RrIjogWyJAY2ltcGxpZnkvc2RrQDAuNTQuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYmFzZS11aS9yZWFjdCI6ICJeMS40LjEiLCAiY2xzeCI6ICJeMi4xLjEiLCAiZGF0ZS1mbnMiOiAiXjQuMS4wIiwgImxpYnBob25lbnVtYmVyLWpzIjogIjEuMTIuNDEiLCAicmVhY3QtZGF5LXBpY2tlciI6ICJeOS4xNC4wIiwgInRhaWx3aW5kLW1lcmdlIjogIl4zLjUuMCIsICJ6b2QiOiAiXjQuNC4zIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBwYXlzdGFjay9pbmxpbmUtanMiOiAiXjIuMjIuOCIsICJtc3ciOiAiPj0yLjAuMCIsICJyZWFjdCI6ICI+PTE3LjAuMCIsICJ2aXRlc3QiOiAiPj0yLjAuMCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkBwYXlzdGFjay9pbmxpbmUtanMiLCAibXN3IiwgInJlYWN0IiwgInZpdGVzdCJdLCAiYmluIjogeyAiY2ltcGxpZnktbW9jayI6ICJkaXN0L21vY2svY2xpLm1qcyIgfSB9LCAic2hhNTEyLVlVTi9sT3FWaUhjaTF2OVVTV1d3QVd0eTI5cEVYQmRMVHVLYXJTbDhFcGFmV2g1amtkR1oxUStOZTkvYmZnVFptUjhpVFVsdEE4VTdnbFYyRm9SU2dnPT0iXSwKCiAgICAiQGRhdGUtZm5zL3R6IjogWyJAZGF0ZS1mbnMvdHpAMS41LjAiLCAiIiwge30sICJzaGE1MTItbHdZTi92RFBlTlJVTGNlcG9FL0xPMlBneCs3L1JWK1M5QVJmYmM5bHIyRHRHa09EN3BBaXJ1SHZiUjFSWDNReWY2amE0N0VXSkRNc05LNXZLMDhESmc9PSJdLAoKICAgICJAZW1uYXBpL2NvcmUiOiBbIkBlbW5hcGkvY29yZUAxLjEwLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGVtbmFwaS93YXNpLXRocmVhZHMiOiAiMS4yLjEiLCAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTIteXE2T2tKNHA4MkNBZlBsMHU5bVFlYlFIS1BKa1k3V3JJdWsyMDVjVFluWWUrazJaOFlCaDExRnJiUkcvSDZpaGlycWNhY09nbDJCSU84b3lNUUxlWHc9PSJdLAoKICAgICJAZW1uYXBpL3J1bnRpbWUiOiBbIkBlbW5hcGkvcnVudGltZUAxLjEwLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTItZXd2WWxrODZ4VW9HSTB6UVJOcS9tQysxNlIxUWVEbEtReTIxS2kzb1NZWE5nTGI0NUdWMVA2QTBNKy9zNm55Q3VORHFlNVZwYVk4NEJ6WEd3VmJ3RkE9PSJdLAoKICAgICJAZW1uYXBpL3dhc2ktdGhyZWFkcyI6IFsiQGVtbmFwaS93YXNpLXRocmVhZHNAMS4yLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTItdVRJSTdPWUYrL01lcy9NcmNJT1lwNXlPdFNNTEJXU0lvTFBwY2d3aXBvaUtibGk2azMyMnRjb0ZzeG9JSXhQRHFXMDFTUUdBZ2tvNEV6WmkyQk52Mnc9PSJdLAoKICAgICJAZXNidWlsZC9haXgtcHBjNjQiOiBbIkBlc2J1aWxkL2FpeC1wcGM2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYWl4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi0xVkNJQ1d5cGVRS2hWYkU5b1cvc0phQW1qTHhoVnFhY2RrdlBMRWp3bHR0amZ3RU5SU0NsUzhFakJ6MEt6UnlGU0NQRElrdVhXMzRKZS92azd6ZEI3UT09Il0sCgogICAgIkBlc2J1aWxkL2FuZHJvaWQtYXJtIjogWyJAZXNidWlsZC9hbmRyb2lkLWFybUAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtIiB9LCAic2hhNTEyLVFOZFFFcHM3RGZGd0UzaFhpVTRCWmVPVjY4SEh6WXdHZDBOdGhoZDN1Q2trRUtLNy9SNk1UZ00wUDdIN0ZBczVwVS9ESVdzdmlNbUVHeEVveElaK1pRPT0iXSwKCiAgICAiQGVzYnVpbGQvYW5kcm9pZC1hcm02NCI6IFsiQGVzYnVpbGQvYW5kcm9pZC1hcm02NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItYkJ5NjlwZ2ZoTUd0Q253cEMveDVRaGZ4QXovY0JnUTllbmJ0d2pmNlY5bG5QSS9oTXlUOWlXcFIxYXJtMGwza3R0VHI0TDBLU0xwS21McC9pbEtTOUE9PSJdLAoKICAgICJAZXNidWlsZC9hbmRyb2lkLXg2NCI6IFsiQGVzYnVpbGQvYW5kcm9pZC14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImFuZHJvaWQiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1UVmhkVnRRSUZ1VnBJSVIyODJidGNHQzJvR1FvU2ZaZm1CZFRpcDJhbkNhVlljcVdsWlhHY2RjS0lVa2xmWDJ3ajBKa2xOWWd6MzlPQnFoMmNxWHZjUT09Il0sCgogICAgIkBlc2J1aWxkL2Rhcndpbi1hcm02NCI6IFsiQGVzYnVpbGQvZGFyd2luLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVkxZ2lDZk00bmxIRFdFZlNja016ZVdOZFFTMzFCUUdzOS9yb3V3NlViOTF0a0s3OWFJTVRIM3E5eEh2ekg4ZDB3RHJ1NUNpMGtXQjhiM3VwL25sMTZnPT0iXSwKCiAgICAiQGVzYnVpbGQvZGFyd2luLXg2NCI6IFsiQGVzYnVpbGQvZGFyd2luLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiZGFyd2luIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItQ0pzcnk4WkdNNVZGVmV5VVlCM2NkS3BkL0g2OVBZZXo0ZUpoMVcvdDM4dnp1dGRqRWp0UDdoQjZlTEtCb09keGNBbEN0RVlIelEvUEovb1U5STR1MEE9PSJdLAoKICAgICJAZXNidWlsZC9mcmVlYnNkLWFybTY0IjogWyJAZXNidWlsZC9mcmVlYnNkLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi15WXErMzlObFRSelUyWG1vUFc0bDVJZnBsOWZxU2swbkFKWU0vVi9XVUdQRUZmZWsxZXBMSEpJa1RRTTZiQnMxc3dBcGpPNW5XZ3ZyODQzZzZUanh1UT09Il0sCgogICAgIkBlc2J1aWxkL2ZyZWVic2QteDY0IjogWyJAZXNidWlsZC9mcmVlYnNkLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiZnJlZWJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLTBGZ3ZPSjZVVU1mbHNIU1BMemRmRG5uQkJWb0NEdEJUVnluL01yV2xvVU52cS81U0ZtaDEzbDNkdmdSUGtEaWhSeGI3N1kxN01icWJDQWEyc3RyTVFRPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtYXJtIjogWyJAZXNidWlsZC9saW51eC1hcm1AMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTIta3JvNGMwUDg1R01mRllxVzRUV09wdm1GOHJGU2hiV0duckxxbHpwNFgxVE5XalJZM0pNWVVmREN0T3hQS09JWThCMFdDOEhONTFoR1A0STRoejRBYVE9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1hcm02NCI6IFsiQGVzYnVpbGQvbGludXgtYXJtNjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi0rODlVc1FUZlhkbWpJdlpTNm5Vbk9PTG9YbmtVVEI5aFI1UUFlTHJRZHpPU1dadk5TQVhBdGNSREhXdHFBVXRBbXY3Wk0xV1BPT2VTeER6enpNb2dpUT09Il0sCgogICAgIkBlc2J1aWxkL2xpbnV4LWlhMzIiOiBbIkBlc2J1aWxkL2xpbnV4LWlhMzJAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJpYTMyIiB9LCAic2hhNTEyLXlURWpvYXB5OFVQM3J2OGRCMGlwM0FmTXBSYnloU04zK2hZOG1vL2k0UVhGZUR4bWlZYkVLcDNaUmpCS2NPUDg2MlVhNGIxUERmd2x2YnV3WTdoSUdRPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtbG9vbmc2NCI6IFsiQGVzYnVpbGQvbGludXgtbG9vbmc2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItTmVxcVlrcmNHekZ3aTZDR1JHTk1PaldHR1NZT3Bxd0NqUzlmdmFVbFg1czN6d090bjFxd2cxczJpRTJzdkJlNFEvWU9HMXE2ODc1bGNBb1FLL0Y0VkE9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1taXBzNjRlbCI6IFsiQGVzYnVpbGQvbGludXgtbWlwczY0ZWxAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJub25lIiB9LCAic2hhNTEyLUljdlRsRjlkdExyZkwvTThXZ05JL3FKWUJFTlAzZWtnc0hiWVVJekV6cTVYSnp6VkVWL2ZYWTlXRlBmRUVYbXUzY2sycUpQOExHL3AzUThmN1pjMlhnPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtcHBjNjQiOiBbIkBlc2J1aWxkL2xpbnV4LXBwYzY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAicHBjNjQiIH0sICJzaGE1MTItSE95MGFMVEpUVnRvVGVHWmg0SFNYYU82TTk1cXU0azVsSmNINGd4djU2aWF5Y2Z6MVM4R08vNUpoNlg0WTFZaUkwaDdjUnlMaStIaXhNUis4OHN3YWc9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1yaXNjdjY0IjogWyJAZXNidWlsZC9saW51eC1yaXNjdjY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1pOEpVREF1ZnB6OWpPem80eUlTaENUY1h6UzA3dkVnV3p5WDNOSDJHN0xFRlZnckxFaGp3TDNhakZFNGZaSTNJNFpnaU03SkgzR1E3UmVPYlJPdlNVQT09Il0sCgogICAgIkBlc2J1aWxkL2xpbnV4LXMzOTB4IjogWyJAZXNidWlsZC9saW51eC1zMzkweEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogInMzOTB4IiB9LCAic2hhNTEyLWpGbnUrNlViTGx6SWpQUXBXQ05oNVF0cmNOZk1MamdJYXZud1BRQWZvR3g0cTE3b2NPVTlNc1EyUVZ2Rnh3UW9XcFpUOER2VExvb1R2bU9RWGtPNTFnPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgteDY0IjogWyJAZXNidWlsZC9saW51eC14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItNmUwY3ZYd3pPblZXSkhxK21za1A4RE5TcktCcjFiVUxCdm5GTHBjMUtZK2QraXJaU2daMDJUR3NlNUZzYWZLUzVqZzJlNHBidks2VFBYYUYvQTYrQ0E9PSJdLAoKICAgICJAZXNidWlsZC9uZXRic2QtYXJtNjQiOiBbIkBlc2J1aWxkL25ldGJzZC1hcm02NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibm9uZSIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItdlVua0JZeFpXNGhML2llOTFoU3FhU05qdWxPbllYRTFWU0x1c252SGcydTNqZXdKQnozWXpCOStvQ3c4REFCZVZxWkdnOTR0OXR5WkZvSG1hOGdXWlE9PSJdLAoKICAgICJAZXNidWlsZC9uZXRic2QteDY0IjogWyJAZXNidWlsZC9uZXRic2QteDY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJub25lIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItWEFnOHBJUW41Q3poT0I4b2RJY0FtNDJRc09mYTk4U0JlS1VkbzR4YThPdlg4TGJNWnFFdGdlV0U5UC9XeHQ3TWxHMlFxdmpHdGhzK25xNDhUclVpS3c9PSJdLAoKICAgICJAZXNidWlsZC9vcGVuYnNkLWFybTY0IjogWyJAZXNidWlsZC9vcGVuYnNkLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJvcGVuYnNkIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1DdDJXY0ZFQU5sRkR0cDFuVkFYU05CUER4eVUrajcrdElkLy9pSFhVMmYvbE41QW1PNHpMeWhEY3BSNUN6MXIwOG1WeHp0M0pweXQ0UG1YUTFPNis3QT09Il0sCgogICAgIkBlc2J1aWxkL29wZW5ic2QteDY0IjogWyJAZXNidWlsZC9vcGVuYnNkLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAib3BlbmJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLXhBR0doeU9ROU90bTFYdThOVDFpZkdMbkE2TTNzSnhaNml4eWxiK3ZJVVZ6dnZkNkdPQUxwd1FyWXJ0bFBvdU1xZC92U2JnZWh6NkhhVms0KzdBZmh3PT0iXSwKCiAgICAiQGVzYnVpbGQvc3Vub3MteDY0IjogWyJAZXNidWlsZC9zdW5vcy14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogInN1bm9zIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItTXcrdHp5NHBwNndaRUswK0x3cjc2cFdManJ0am1KeVVCMjN0SEtxRURQNzRSM3E5NWx1WS9iWHFYWmVZbDROWWx2d09xb1JLbEluUWlhbGdDS3k2N1E9PSJdLAoKICAgICJAZXNidWlsZC93aW4zMi1hcm02NCI6IFsiQGVzYnVpbGQvd2luMzItYXJtNjRAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1BVlVQNDI4VlFUU2RkZ3V6OWRPOW5nYitFNWFTY3lnN25PZUpEckYxSFBZdTU1NWdtemEzYkRHTVBobVZYTDhzdkRTb3FQQ3NDUGpiMjY1eUcva0xLUT09Il0sCgogICAgIkBlc2J1aWxkL3dpbjMyLWlhMzIiOiBbIkBlc2J1aWxkL3dpbjMyLWlhMzJAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJpYTMyIiB9LCAic2hhNTEyLWkxc1crMWkrb1d2UXpTZ2ZSY3h4RzJrNEk5bjNPOU5ScXk4VSt1dWdhVDJEeTdrTE85WTd3STcyaGFPYWh4Y2VNWDhoWkF6Z0dvdTFGaG5kUmxkeFJnPT0iXSwKCiAgICAiQGVzYnVpbGQvd2luMzIteDY0IjogWyJAZXNidWlsZC93aW4zMi14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItbk9UMnZaTnc2aEorejQzb1AxU1BlYS9HLzZBYk42WCtiR05oTnVxOE50Ukh5NHdzTWh3NzY1SUtMTm1uamVrN0d2aldCWVE4UTVWQm9ZVEZnOXkxVVE9PSJdLAoKICAgICJAZmxvYXRpbmctdWkvY29yZSI6IFsiQGZsb2F0aW5nLXVpL2NvcmVAMS43LjUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGZsb2F0aW5nLXVpL3V0aWxzIjogIl4wLjIuMTEiIH0gfSwgInNoYTUxMi0xSWg0V1RXeXcwK2xLeUZNY0JIR2JiNVU1RnR1SEp1dWpveXlyNXpUYVdTNUVZTWVUNkpiMkF1RGVmdHNDc0V1Y2hPK21NMmlqNStxOWNyaHlkekxoUT09Il0sCgogICAgIkBmbG9hdGluZy11aS9kb20iOiBbIkBmbG9hdGluZy11aS9kb21AMS43LjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGZsb2F0aW5nLXVpL2NvcmUiOiAiXjEuNy41IiwgIkBmbG9hdGluZy11aS91dGlscyI6ICJeMC4yLjExIiB9IH0sICJzaGE1MTItOWdaU0FJNVhNMzY4ODBQUE1tLy85ZGZpRW5nWW9DNkFtMml6RVMxRkY0MDZZRnNqdnlCTW1lSjJnNFNBanUzeFd3dHV5bk5SRkwyczloZ3hwTEk1U1E9PSJdLAoKICAgICJAZmxvYXRpbmctdWkvcmVhY3QtZG9tIjogWyJAZmxvYXRpbmctdWkvcmVhY3QtZG9tQDIuMS44IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBmbG9hdGluZy11aS9kb20iOiAiXjEuNy42IiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgInJlYWN0IjogIj49MTYuOC4wIiwgInJlYWN0LWRvbSI6ICI+PTE2LjguMCIgfSB9LCAic2hhNTEyLWNDNTJiSHdNL24vQ3hTODdGSDB5V2RuZ0VacmpkdExXL3FWcnVvNjhxZytwcks3WlE0WUdkdXQyR3lEVnBvR2VBWWUvaDg5OXJWZU9WbTZPaTQwazJBPT0iXSwKCiAgICAiQGZsb2F0aW5nLXVpL3V0aWxzIjogWyJAZmxvYXRpbmctdWkvdXRpbHNAMC4yLjExIiwgIiIsIHt9LCAic2hhNTEyLVJpQi95SWg3OHBjSXhsNmxMTUcwQ2dCWEFaMlkwZVZIcU1QWXVndSs5VTBBZVQ2WUJlaUpwZjdsYmRKTkl1Z0ZQNVNJandOUmdvNERoUjFReGkyNkdnPT0iXSwKCiAgICAiQGltZy9jb2xvdXIiOiBbIkBpbWcvY29sb3VyQDEuMS4wIiwgIiIsIHt9LCAic2hhNTEyLVRkNzZxN2o1N28vdExWZGdTNzQ2Y1lBUmZTeXhrOGlFZlJ4ZXdMOWg0T016WWhiVzRUQWNwcGwwbVQ0ZXlxWGRkaDZML2p3b003NW1vN2l4YS9wQ2VRPT0iXSwKCiAgICAiQGltZy9zaGFycC1kYXJ3aW4tYXJtNjQiOiBbIkBpbWcvc2hhcnAtZGFyd2luLWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiAiMS4yLjQiIH0sICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLWltdFEzV01KWGJNWTRmeGIvTmRwNkhCVE5WdFdDVUkwV2RvYnloZUdmNSthZDZ4WDhWSURPOHUyeEU0cWMvZnIwOENLRy83ZERzZUZ0bjZNNmcvcjN3PT0iXSwKCiAgICAiQGltZy9zaGFycC1kYXJ3aW4teDY0IjogWyJAaW1nL3NoYXJwLWRhcndpbi14NjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWRhcndpbi14NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1ZTkVGQUYvNEtRL1BlVzBOK3IrYVZWc29JWTAvcXh4aWtGMlNXZHArTlJrbU1CN3k5TEJaQVZxUTR5aEdDbS9IM0gyNzBPU3lrcW1RTUtMQmhCSkRFdz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjRAMS4yLjQiLCAiIiwgeyAib3MiOiAiZGFyd2luIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi16cWpqbzdSYXRGZkZvUDBNa1E1MWpmdUZaQm5WRTJwUmlheWRLSjFHL3JIWnZuc3JIQU9jUUFMSWk5c0E1Y281eGVuUWRUdWdDdnRiMWN1Zjc4VmY0Zz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4teDY0IjogWyJAaW1nL3NoYXJwLWxpYnZpcHMtZGFyd2luLXg2NEAxLjIuNCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi0xSU9kNXhmVmhsR3dYK3pYdjJOOTNrMHlNT052VWxBTnlsYkp3MWVUYWg4Sy9KdHBpMTVLQytXU2lhWC9uQm1ibTJIeFJNMWdaMG5TZGpTc3JaYkdLZz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm0iOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm1AMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybSIgfSwgInNoYTUxMi1iRkk3eGNLRkVMZGlOQ1ZvdjhlNDRJYTR1MmJ5QStsM1h0c0FqK1E4dGZDd082QlE4aURvallkdm9QTXFzS0RrdW9PbytYNkhaQTBzMHExMUFOTVE4QT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm02NCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybTY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1leGNqWDhEZnNJY0oxMHgxS3pyNFJjV2UxZWRDOVBxdURSUlB4M1lWQ3ZRditVNXA3WWluMnMzMmZ0emlrWG9qYjFQSUZjLzlNdDI4L3kraVJrbGtydz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1wcGM2NCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi1GTXV2R2lqTERZRzZsVytiL1V2eWlsVVd1NUF5dSszcjJkMVM4bm90aUdDSXlZVS83NmVpZzFVZk1ta1o3dndnT3J6S3psUWJGU3VRZmdtN0dZVVBwQT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1yaXNjdjY0IjogWyJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgtcmlzY3Y2NEAxLjIuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1vVkRiY1I0elVDMGNlODJ0ZXViU20reDZFVGl4dEtaQmgvcWJSRUlPY0kzY1VMekR5YjE4U3IvV2N5eDdOUlFlUXpPaUhUTmJaRkYxVXdQUzJzY3lHQT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1zMzkweCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXMzOTB4QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJzMzkweCIgfSwgInNoYTUxMi1xbXA5VnJ6Z1BnTW9HWnlQdnJRSHFrMDJ1eWpBMC9RclRPMjZUcWs2bDRaVjBNUFdJVzZMVGtxT0lvditKMXlFdTdNYkZRYURwd2R3SktoYkp2dVJ4UT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjRAMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi10SnhpaUxzbUhjOUF4MWJ6M29hT1lCVVJUWEdJUkRPREJxaHZlVkhvbnJISjkvK2s4OXFiTGwwYmNKbnMrZTR0NHJ2YU5CeGFFWnNGdFNmQWRxdVBydz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjRAMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLUZWUUh1d3gxSUl1Tm93OVFBYllVekorRW44S2NWbTlMazUrdUdVUUpIYVptTUVDWm1PbGl4OUhuSDduMVRSa1hNUzBwR3hJSm9rSVZCOVN1cVpHR1h3PT0iXSwKCiAgICAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4bXVzbC14NjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wteDY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItK0xweUJrN0w0NFpJWHd6L1ZZZmdsYVgvb2t4ZXpFU2M2VXhEU295bzJLczZKeGM0WTdzR2pwZ1U5czRQTWdxZ2pqMWdaQ3lsVGllTmFtcUExTUY3RGc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4LWFybSI6IFsiQGltZy9zaGFycC1saW51eC1hcm1AMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybSI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItOWRMcXN2d3RnMXV1WEJHWktzeGVtOTU5NSt1anYwc0o2Vmk4d2NUQU5TRnB3Vi9HT05hdDVlQ2t6UW8vMU82elJJa2gwbS84KzVCanJScjdqRFVTWnc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4LWFybTY0IjogWyJAaW1nL3NoYXJwLWxpbnV4LWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm02NCI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1iS1F6YUpSWS9ia1BPWHlLeDVFVnVwN3FrYW9qRUNHNk5MWXN3Z2t0T1pqYVhlY1NBZUNXaVp3d2lGZjMvWStPMUhyYXVpRTNGVnNHeEZnOGMyNHJaZz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGludXgtcHBjNjQiOiBbIkBpbWcvc2hhcnAtbGludXgtcHBjNjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0IjogIjEuMi40IiB9LCAib3MiOiAibGludXgiLCAiY3B1IjogInBwYzY0IiB9LCAic2hhNTEyLTd6em53TmFxVzZZdHNmckdHREE2QlJrSVNLQUFFMUpvMFFkcE5ZWE5NSHUyKzBkVHJQZmxUTE5rcGM4bDdNVVA1TTE2WkpjVXZ5c1ZXV3JNZWZacXVBPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eC1yaXNjdjY0IjogWyJAaW1nL3NoYXJwLWxpbnV4LXJpc2N2NjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXJpc2N2NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi01MWdKdUxQVEthN3BpWVBhVnM4R21CeW83L1U3LzdUWk9xK2NuWEpJSFpLYXZJUkhBUDc3ZTNOMkhFbDNkZ2lxZEQvdzB5VWZpSm5JSTc3UHVEREZkdz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGludXgtczM5MHgiOiBbIkBpbWcvc2hhcnAtbGludXgtczM5MHhAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXMzOTB4IjogIjEuMi40IiB9LCAib3MiOiAibGludXgiLCAiY3B1IjogInMzOTB4IiB9LCAic2hhNTEyLW5RdENrMFBkS2ZobzNlQzVNcmJRb2lnSjJnZDFDZ2RkVU1rYWJVaityQmV2czh0WjJjVUxPeDQ2RTdveVgrMDRXR2ZBQmdJd21NQzBWcWllVGlSNGpnPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eC14NjQiOiBbIkBpbWcvc2hhcnAtbGludXgteDY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLU1FemQ4SFBLeFZ4VmVud0FhK0pSUHdFQzdRRmpvUFd1UzVOWm5CdDZCM3B1N0VHMkdlMGlkMW9MSFpwUEpkbjNPUUsrQlFEaXc5elN0aUhCVEpRUVFRPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eG11c2wtYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGludXhtdXNsLWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItZnBySlI2R3RSc010Nkt5ZnE0NElzQ2hWWmVHTjk3Z1REMzMxd2VSMWV4MWMxcnlwREVBQk42VG0yeGExd0U2bFliNURkRW5rMDNOWlBxQTdJZDIxeWc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4bXVzbC14NjQiOiBbIkBpbWcvc2hhcnAtbGludXhtdXNsLXg2NEAwLjM0LjUiLCAiIiwgeyAib3B0aW9uYWxEZXBlbmRlbmNpZXMiOiB7ICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXhtdXNsLXg2NCI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSmc4d05UMU1Vekl2aEJGeFZpcXJFaFdER3pxeW1vM3NWN3o3WnNhV2JaTkRMWFJKWm9SR3JqdWxwNjBZWXRWNHdmWThWSUtjV2lkam9qbExjV3JkOFE9PSJdLAoKICAgICJAaW1nL3NoYXJwLXdhc20zMiI6IFsiQGltZy9zaGFycC13YXNtMzJAMC4zNC41IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvcnVudGltZSI6ICJeMS43LjAiIH0sICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1PZFdURWlWa1kyUEh3cWtiQkk4ZnJGeFFRRmVrSGFTU2tVSUprd3pjbFdaZTY0TzFYNFVsVWpxcXFMYVBiVXBNT1FrNkZCdS9IdGxHWE5ibElzMGh1dz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzItYXJtNjQiOiBbIkBpbWcvc2hhcnAtd2luMzItYXJtNjRAMC4zNC41IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1XUTNBZ1dDV1lTYjJ5dCtJRzhtbkM2SmRrOVdoczdPMGd4cGhibHNMdmRoU3BTVHRtdTY5WkcxR2tiNk51dnhzTkFDd2lQVjZjTlNaTnp0MEtQc3c3Zz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzItaWEzMiI6IFsiQGltZy9zaGFycC13aW4zMi1pYTMyQDAuMzQuNSIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAiaWEzMiIgfSwgInNoYTUxMi1GVjltLzdObWVDbVNIREQ1ajQrNHBOSThDcDNhVytKdkxvWGNUVW8wSXF5alNmQVpKOGRJVW1pangxcWFKc0lpVStIb3N3NnhNNUtpakFXUkpDU2dOZz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzIteDY0IjogWyJAaW1nL3NoYXJwLXdpbjMyLXg2NEAwLjM0LjUiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi0rMjlZTXNxWTIvOWVGRWlXOTNlcVdudUxjV2N1Zm93WGV3d1NOSVQ2VXdaZFVVQ3JNM29Gak1XSC9aNi9UTW1iNGhsRmVubWZBVmJwV2V1cDJqcnlDdz09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogWyJAanJpZGdld2VsbC9nZW4tbWFwcGluZ0AwLjMuMTMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjIjogIl4xLjUuMCIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjQiIH0gfSwgInNoYTUxMi0ya2t0LzduaUo2TWdFUHhGMGJZZFE2ZXRaYUErZlF2RGNMS2NraHkxeUlRT3phb0tqQkJqU2o2My9hTFZqWUUzcWhSdDVkdk0rdVV5ZkNnNlVLQ0JiQT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3JlbWFwcGluZyI6IFsiQGpyaWRnZXdlbGwvcmVtYXBwaW5nQDIuMy41IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogIl4wLjMuNSIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjQiIH0gfSwgInNoYTUxMi1MSTl1LytsYVlHNERzMVRES1NKVzJZUHJJbGNWWU93aTJmVUM2eEI0M2x1ZUNqZ3hWNGxmZk9DWkN0WUZpSDZUTk9YK3RRS1h4OTdUNElLSGJoeUhFUT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3Jlc29sdmUtdXJpIjogWyJAanJpZGdld2VsbC9yZXNvbHZlLXVyaUAzLjEuMiIsICIiLCB7fSwgInNoYTUxMi1iUklTZ0NJalAyMC90YldTUFdNRWk1NFFWUFJaRXhrdUQ5bEpMK1VJeFVLdHdWSkE4d1cxVHJiMWpNczFSRlhvMUNCVE5aLzVocEM5UXZtS1dkb3BLdz09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3NvdXJjZS1tYXAiOiBbIkBqcmlkZ2V3ZWxsL3NvdXJjZS1tYXBAMC4zLjExIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogIl4wLjMuNSIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjUiIH0gfSwgInNoYTUxMi1aTXAxVjhaRmNQRzVkSVduUUxyM05TSTFNaUNVN1VFVGRTL0EwRzhWL1hXSHZKdjNac0ZxdXRKbjFZNVJQbUFQWDZGM0JpRTM5N09xdmVVLzlOQ3VJQT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3NvdXJjZW1hcC1jb2RlYyI6IFsiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjQDEuNS41IiwgIiIsIHt9LCAic2hhNTEyLWNZUTkzMTBncnF4dWVXYmwrV3VJVUlhaVVhRGNqN1dPcTVmVmhFbGpOVmdSZk9VaFk5ZnkyelR2Zm9xV3NuZWJoOFNsNzBWU2NGYklDdkpuTEtCME9nPT0iXSwKCiAgICAiQGpyaWRnZXdlbGwvdHJhY2UtbWFwcGluZyI6IFsiQGpyaWRnZXdlbGwvdHJhY2UtbWFwcGluZ0AwLjMuMzEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvcmVzb2x2ZS11cmkiOiAiXjMuMS4wIiwgIkBqcmlkZ2V3ZWxsL3NvdXJjZW1hcC1jb2RlYyI6ICJeMS40LjE0IiB9IH0sICJzaGE1MTItenpOUitTZFFTREp6Yzhqb2FlUDhRUW9DUXI4TnVZeDJkSUl5dGwxUWVCRVpISjl1VzZoZWJzcllnYno4aEp3VVFhbzNUV0NNdG1mVjhOdTF0d09MQXc9PSJdLAoKICAgICJAbmFwaS1ycy93YXNtLXJ1bnRpbWUiOiBbIkBuYXBpLXJzL3dhc20tcnVudGltZUAxLjEuNCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAdHlieXMvd2FzbS11dGlsIjogIl4wLjEwLjEiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQGVtbmFwaS9jb3JlIjogIl4xLjcuMSIsICJAZW1uYXBpL3J1bnRpbWUiOiAiXjEuNy4xIiB9IH0sICJzaGE1MTItM05RTk5nQTFZU2xKYi9rTUgxaWxkQVNQOUhXNy83a1luUkkyc3pXSmFvZmFTMWhXbWJHSTRIK2QzKzIyYUd6WFhOOUlKK24rR2lGVmNHaXBKUDE4b3c9PSJdLAoKICAgICJAbmV4dC9lbnYiOiBbIkBuZXh0L2VudkAxNi4yLjYiLCAiIiwge30sICJzaGE1MTItZ2Q4SG9ITjR1Zmo3M1dtUjNKbVZvbHJwSlI0N0lMSzZMb3VQNXhFbFBnbGFWeGlyNmUxYTdWenZUdkRXa09vUFhUOXJra1R6eUN4QnU0eWVaZlp3Y3c9PSJdLAoKICAgICJAbmV4dC9zd2MtZGFyd2luLWFybTY0IjogWyJAbmV4dC9zd2MtZGFyd2luLWFybTY0QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVpKR2trY05mWWdyck1rcU9kWjd6b0xhMVRPeTBxcGNNZmsvejRNaC9GS1V6NDBnVk8rSE5RV3FtTHhmNjdaNVdCNjREUnAwZGhFYnlIZmVsKzZzSlVnPT0iXSwKCiAgICAiQG5leHQvc3djLWRhcndpbi14NjQiOiBbIkBuZXh0L3N3Yy1kYXJ3aW4teDY0QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi12L1lMQkhJWTEzMkNlZDNwdUJKN1lKS3cxbHFzQ3JnY05vMmFSSmxDRXlRcnJDZVJKbHZHbG5teGhQeE5RSTNLRTNOMURONXI5VFBOUHZrYTNucTVSUT09Il0sCgogICAgIkBuZXh0L3N3Yy1saW51eC1hcm02NC1nbnUiOiBbIkBuZXh0L3N3Yy1saW51eC1hcm02NC1nbnVAMTYuMi42IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1SUE92cWxZQmJjUWprejlWUVFEWjJUMmJBUklqWFpWMUtGbHQrVjJNcjZTVy9lNEk5ZmNLc2FBMGhkeWYyRkhvVGxzVjJ4bkJkNVk5MTJyUC8xQ2U2dz09Il0sCgogICAgIkBuZXh0L3N3Yy1saW51eC1hcm02NC1tdXNsIjogWyJAbmV4dC9zd2MtbGludXgtYXJtNjQtbXVzbEAxNi4yLjYiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVVSVVR1MStkTWt4SnNQRmdtK09lRXZxOXdmNXN1ancwRXZnWXk4MFRER0hUU0xUbklIZXFiMEV1OEEzc0M5NUlSZ2plalFMK2tDNG13KzR5UHhpQVhBPT0iXSwKCiAgICAiQG5leHQvc3djLWxpbnV4LXg2NC1nbnUiOiBbIkBuZXh0L3N3Yy1saW51eC14NjQtZ251QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLURPajE4Mm1QVjhHM1VrcmF5TG9SRU01WUVZSStEazV3djdPeDl4bDFmRmliQUVMRXNGRDBsRFBmSEllSUxsdXRNTWZkeWhsellQRUxHM3BldUthdXJ3PT0iXSwKCiAgICAiQG5leHQvc3djLWxpbnV4LXg2NC1tdXNsIjogWyJAbmV4dC9zd2MtbGludXgteDY0LW11c2xAMTYuMi42IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSEtRNVNQL1YvdWI3M1V2RjduL3plSmx4azJrTG10TDdXenJnNFdmbWtqbU5vczVvbkoydEt1N3laT1BkTDE4QTZTdmZuM21heDI5eW0rcnk3TmtLNGc9PSJdLAoKICAgICJAbmV4dC9zd2Mtd2luMzItYXJtNjQtbXN2YyI6IFsiQG5leHQvc3djLXdpbjMyLWFybTY0LW1zdmNAMTYuMi42IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1MWlhwVGxQeVM1djdIaFNtbnZzTEdQM2lJWWdZT0JuYzhyOEFybFQ1NXNHSFY4OWJSMkhsRGRCaldRK1BZNlNKTW1rOFR1VkdGdXhhbG5QM2svMER3Zz09Il0sCgogICAgIkBuZXh0L3N3Yy13aW4zMi14NjQtbXN2YyI6IFsiQG5leHQvc3djLXdpbjMyLXg2NC1tc3ZjQDE2LjIuNiIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLUYwKzRpMGg5SjZDNGVFM0VBUFdzb0NrN1VXL2Riek9qeXp4WTBxbkRVT1lGdTZGRm1kWjZsOTcvWGRWMy9OejNWWXlPN1VXanlFSlVYa0dxY29YZk1BPT0iXSwKCiAgICAiQG94Yy1wcm9qZWN0L3R5cGVzIjogWyJAb3hjLXByb2plY3QvdHlwZXNAMC4xMzIuMCIsICIiLCB7fSwgInNoYTUxMi1GRVNNT3hpbDVTZTAxNHVpL0VxOGZUNXVISm82bklSd0gwUGZKclpKWHM2R2VrM1pWRk9ycFV2M1lJWlQyMG0rZXh0VTk4SGcxWW03MlU1OHJsc3hVUT09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWFuZHJvaWQtYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLWFuZHJvaWQtYXJtNjRAMS4wLjIiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItWlM0RDFKUEduL01ZUU4vU1lEV2Z0SUUvblZzTThqL0FGT1lFekFvT0UyTzNOa3RRT1pydSsvdllYR2JSL3F0ZExkSWZHQ1AwbGNvSmlZVnpzRXoraVE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1kYXJ3aW4tYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLWRhcndpbi1hcm02NEAxLjAuMiIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLXZkRkE5K0MvcmVreUdjZTdXcUhzL3hvVDBpb1pFV2FPRnlaTElWMW1FZU5GYUZEVVFyUElvOFZzMkd2SjZlZXRiM3J6RFV0VUJnenRvM0V4cFhKQjN3PT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NCI6IFsiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NEAxLjAuMiIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1CZXdTT3dUSGF6djc3RFRZaUFaWFNxcUtaNEtQL0tvbkZpc0RNVlU3UElteG9XZkIyYWVwblBoZDJFNFNXejN6RHpZZ0ROYnM2akJtVGRnTm5GMDJHQT09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWZyZWVic2QteDY0IjogWyJAcm9sbGRvd24vYmluZGluZy1mcmVlYnNkLXg2NEAxLjAuMiIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItbTQxbzdNMFlXdFVkcWs2MVRiK2puS2Iyck4rK2lSZElBU2xFeGtVb0tmSUFIMzBET0hDQjhmVkx6U1VwYldISFU4ZXNtRWlvWTYyUHh6ZXhFOE1CdUE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmQDEuMC4yIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItamNvakI5SDdXL2pTMjlwTUtXQUsxTitmVTk5dlhvZEhEVGF0UzNiM3kvWFNPQ2lIbzBra0E3NHBMM2pKbWtvUXRZcE9DeER2YUtzMWZvMklqLzFYNXc9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1nbnUiOiBbIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LWFybTY0LWdudUAxLjAuMiIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItMWpuNnFEVTVpaU9nRmd5Z0R6S1V1S1AwbWFUaTAvZjErc0JMZ3Zpai83NkM3N05tM3RzNnVmejlCamc1cTVkZHV4aVVJeHRxODZKSW9Cdm8xeFE0SWc9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsQDEuMC4yIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1RVkxPL2N6Rk1kb01GU3FsWDNiY3N3Y0pObS8yM3IrcW9hL2pndG1GYy9xRXA2L2pYbUlrRGpGL1hJbzhkUGZHYWl3eTF4ZlFuOG83N0w3OUdlWEZndz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXBwYzY0LWdudSI6IFsiQHJvbGxkb3duL2JpbmRpbmctbGludXgtcHBjNjQtZ251QDEuMC4yIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi1oZ081QWJtMHc1VUw2RkVhMmlGblpxbzJLbEs3VFE1UWhWNXgwOWh1akJmN3Q1S3pIUTFWbWZQdVRwcVJ5L3JObFN4dWEzZVdIMzc0eHhpVnJQK2xjQT09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXMzOTB4LWdudSI6IFsiQHJvbGxkb3duL2JpbmRpbmctbGludXgtczM5MHgtZ251QDEuMC4yIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJzMzkweCIgfSwgInNoYTUxMi1meThyWHh1WUV1NjAyYWJDOE1VTmFQallMSUZ6UmVPYUVJRU1LTVVhMHJGRVV4TnBWWGhzMTVLU1NRNHFscVNhTTdCNnJjajlyRFpnQURoL0lHRHpMUT09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1nbnUiOiBbIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1nbnVAMS4wLjIiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi0wK2JPa2lRNzc5K3IxV3BvSE9XSHFuY3Z5eVNjaTB2S3BoK215TkRZYitpbTZtZUpBekhRWGF5Nm9FZ25rSHVVR291TTFMS1Rad3FLcEJvdzZLajdDUT09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1tdXNsIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC14NjQtbXVzbEAxLjAuMiIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLW1qU2tyelpLNVFzbDBhOWQxSmdJTE9pdVpPU0RUVmRLRU5jU1hCb3FielNyc3BMUi80L0lSVkRvNXdkMkdnWmpOc3MvdmlCRkpkZXErajdxSDJueXB3PT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctb3Blbmhhcm1vbnktYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLW9wZW5oYXJtb255LWFybTY0QDEuMC4yIiwgIiIsIHsgIm9zIjogIm5vbmUiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLTF2NXZIYXNkZlFBWm9FSGFrQlY3MkxJRkFDOUpqbnltc2lLeHArR0VyL21hMytOSkNQU2FZSytxYXZJbk9vdkprZ3dGcnM3R2NjWDJkNklnREEzWjV3PT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctd2FzbTMyLXdhc2kiOiBbIkByb2xsZG93bi9iaW5kaW5nLXdhc20zMi13YXNpQDEuMC4yIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvY29yZSI6ICIxLjEwLjAiLCAiQGVtbmFwaS9ydW50aW1lIjogIjEuMTAuMCIsICJAbmFwaS1ycy93YXNtLXJ1bnRpbWUiOiAiXjEuMS40IiB9LCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItbWIxVm9iV242TmhlemlUazUvV0VhUjZBS1ZicndUNXNPaTZDN3prM2d5L3BEMXF0SmZVMWo0UGdUbzJOSm5PdGJMOURsM0FlZWk4dzlqSjdxQzJqWlE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjIjogWyJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjQDEuMC4yIiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1TcUtvbkY1NnZBL0wyeUh3SFljRXAyUDM0VVJwT1o3ZDFmUzYzNWNUa3BEblV0RUdkVWJoSTZOenNQZHFlU1d2QUFlR0RyeGpXak5taWJESWRGZjkvQT09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLXdpbjMyLXg2NC1tc3ZjIjogWyJAcm9sbGRvd24vYmluZGluZy13aW4zMi14NjQtbXN2Y0AxLjAuMiIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLXY3cVJJN2dYTFJJTmNPR1h0KzdZbUFaNmlGdXlaVk1Jb1hBeGhkOG9QK0RSOWRMZkw5R2ZOSXg3UExNeG1oWmR2cTh3YVVKQlFpV045RUtOeStUUkJRPT0iXSwKCiAgICAiQHJvbGxkb3duL3BsdWdpbnV0aWxzIjogWyJAcm9sbGRvd24vcGx1Z2ludXRpbHNAMS4wLjEiLCAiIiwge30sICJzaGE1MTItMmo5Ykd0NUpoOGhqK3ZQdGd6UHRsNzJqMHlSeEhBeXVtb282VE5mQWpzTEIwNFV0cFN2UGJQY0RjQk14ejduKzlDWUIwYzFHeFFGeFlSZzJqaW1xR3c9PSJdLAoKICAgICJAc3RhbmRhcmQtc2NoZW1hL3NwZWMiOiBbIkBzdGFuZGFyZC1zY2hlbWEvc3BlY0AxLjEuMCIsICIiLCB7fSwgInNoYTUxMi1sMmFGeTVqQUxobmlHNUhncXJENmpYTGkvclVXckt2cU4vcUp4NnlvSnNnS2hibFZkK2lxcVU0UkNYYXZtL2pQaXR5RG81VEN2S01ucGpLbk9yaXkwdz09Il0sCgogICAgIkBzd2MvaGVscGVycyI6IFsiQHN3Yy9oZWxwZXJzQDAuNS4xNSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi44LjAiIH0gfSwgInNoYTUxMi1KUTVUdU1pNDVPd2k0L0JJTUFKQm9TUW9PSnUxMm9Pay9nQURxbGNVTDlKRWRIQjh2eWpVU3N4cWVOWG5tWEhqWUtNaTJXY1l0ZXpHRUVocVVJL0UyZz09Il0sCgogICAgIkB0YWJieV9haS9oaWpyaS1jb252ZXJ0ZXIiOiBbIkB0YWJieV9haS9oaWpyaS1jb252ZXJ0ZXJAMS4wLjUiLCAiIiwge30sICJzaGE1MTItcjViQ2xLcmNJdXNEb28wNDlkU0w4Q2F3bkhSNm1SZER3aGxRdUlnWlJOdHk2OHEweDhrM0xmMUJ0UEFNeFJmL0dnbkhCbklPNHVqZDMrR1FkTFd6eFE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvbm9kZSI6IFsiQHRhaWx3aW5kY3NzL25vZGVANC4zLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvcmVtYXBwaW5nIjogIl4yLjMuNSIsICJlbmhhbmNlZC1yZXNvbHZlIjogIl41LjIxLjAiLCAiaml0aSI6ICJeMi42LjEiLCAibGlnaHRuaW5nY3NzIjogIjEuMzIuMCIsICJtYWdpYy1zdHJpbmciOiAiXjAuMzAuMjEiLCAic291cmNlLW1hcC1qcyI6ICJeMS4yLjEiLCAidGFpbHdpbmRjc3MiOiAiNC4zLjAiIH0gfSwgInNoYTUxMi1hRmI0Z1VoRk9nZGg5QVhvNEl6QkVPekJra0F4bTlWaWd3REpuTUlZdjNsY2ZYQ0pWZXNOZmJFYUJsNEJOZ1ZSeWlkOTJBbWR2aXF3QlVCUktTZVkzZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZSI6IFsiQHRhaWx3aW5kY3NzL294aWRlQDQuMy4wIiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQHRhaWx3aW5kY3NzL294aWRlLWFuZHJvaWQtYXJtNjQiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtZGFyd2luLXg2NCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtZnJlZWJzZC14NjQiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybS1nbnVlYWJpaGYiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybTY0LWdudSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtbXVzbCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LWdudSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LW11c2wiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLXdhc20zMi13YXNpIjogIjQuMy4wIiwgIkB0YWlsd2luZGNzcy9veGlkZS13aW4zMi1hcm02NC1tc3ZjIjogIjQuMy4wIiwgIkB0YWlsd2luZGNzcy9veGlkZS13aW4zMi14NjQtbXN2YyI6ICI0LjMuMCIgfSB9LCAic2hhNTEyLUY3SFpHQmVOOUkwL0F1dUpTNVB3Y0Q4eGF5eDVyaTVHaGpZVURCRVZZVWtleHlBL2dpd2JETmpSVnJ4U2V6RTNUMjUwT1UySy93cC9sdFd4M1VPZWZnPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWFuZHJvaWQtYXJtNjQiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1hbmRyb2lkLWFybTY0QDQuMy4wIiwgIiIsIHsgIm9zIjogImFuZHJvaWQiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVRKUGlxNjd0S2xMdU9iUDZSa3d2VkdEb3hDTUJWdERnS2tMZmEvdXlqNy9GeXh2UXdIUytVT25WclhYZ2JFc2ZVYU1naVZ2QzRLYkpuUnIyNmhvNE5nPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NCI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NEA0LjMuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLW9NTi9XWlJiK1NPMzdCbVVFbEVnZUVXdVU4RS9IWFJraU9EeEp4TGUxVVRIVlhMcmRWU2dmYUpWN3BTbGhSR01TT2lYTHV4VElqZnNGM3dZdno4Y2dRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi14NjQiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1kYXJ3aW4teDY0QDQuMy4wIiwgIiIsIHsgIm9zIjogImRhcndpbiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLU42Q1VtdTRhNmJLVkFEZnc3N3AraXc2WWQ5UTNPQmhlMHZlYURYK1FhemZ1VllsUXNIZkRneEJyc2pRL0lXK3p5d0w4bVRyTmQwU2RKVC96Z3R2TWRBPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWZyZWVic2QteDY0IjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtZnJlZWJzZC14NjRANC4zLjAiLCAiIiwgeyAib3MiOiAiZnJlZWJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLXpETDVoQmtRZEg1QzZNcHFiSzNnUUFnUDgwdHNNd1NJMjZ2ak96akp0TkNNVW8wbEZnT0l0ekhLQkl1cE9aTlF4dDNvdVBIN1JQaHZOaGlUZkNlNUNRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybS1nbnVlYWJpaGYiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC1hcm0tZ251ZWFiaWhmQDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItUjA2SGROaTdBN09Fb01zZjZkNHRqWjcxUkNXblpRUEhqMm1ub3RTRlVSak5MZEJDK2NJZ1hRN2w4MUNxZW9pUWZ0amY2T09ibHhYTUluTWdOMlZ6TUE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtZ251IjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtZ251QDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1xVEpIRUxYOGpldGpoUlFIQ0xpbGtWTG15YnB6TlFBdGFJL2dhb1ZvaWRuL3VmYk5EYkFvOEtsSzJKK3lQb2M4d1F4dkR4Q21oLzVscjhuQzErbFRiZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC1hcm02NC1tdXNsIjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtbXVzbEA0LjMuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItWjZzdWtpUXNuZ25XTytsMzlYNHBQYmlXVDgxSUMrUExLRitQSHhJbHlaYkdOYjlNT0RmWWxYRVZsRnZlajVCT1pJbldYMDFrVnl6ZUx2SHNYaGZjelE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LWdudSI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LXg2NC1nbnVANC4zLjAiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1EUk5kUVJwU0d6UkdmQVJWdVZreHZNOFExMm5oMTlsNEJGL0c3ekdBMW9lKzl3Y0M2c2FGQkhUSVNycEljS3poaVh0U3JsU3JsdUNmdk11bGVkb0NUUT09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC14NjQtbXVzbCI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LXg2NC1tdXNsQDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItWjBJQURiRG84Ymg2STdoMklRTXg2MDFBZFhCTGZGcEVkVW90ZnQ4NmV2ZC84WlBmbFplOUNPUE84UTF2dytwZkxXSVVvOXpOL0pHWnZ3dUFKcWR1cWc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kiOiBbIkB0YWlsd2luZGNzcy9veGlkZS13YXNtMzItd2FzaUA0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAZW1uYXBpL2NvcmUiOiAiXjEuMTAuMCIsICJAZW1uYXBpL3J1bnRpbWUiOiAiXjEuMTAuMCIsICJAZW1uYXBpL3dhc2ktdGhyZWFkcyI6ICJeMS4yLjEiLCAiQG5hcGktcnMvd2FzbS1ydW50aW1lIjogIl4xLjEuNCIsICJAdHlieXMvd2FzbS11dGlsIjogIl4wLjEwLjEiLCAidHNsaWIiOiAiXjIuOC4xIiB9LCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItSE5aR09VeEVtRWxrc1lSN1M2c0M1alRlTkdwb2JBc3k5dTdHdTBBc2tKOC8yMEZSOUdxZWJVeUIrSEJjVS9heDZCSHVpdUppK09kYTRCK1lYNkgxeUE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2luMzItYXJtNjQtbXN2YyI6IFsiQHRhaWx3aW5kY3NzL294aWRlLXdpbjMyLWFybTY0LW1zdmNANC4zLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVBlK1JQVlRpMVQrcXltdXVScGNkdndTVlpqbmxsL2Y3bjhnQnhNTWgzeExUY3RNREtxcGRmR2ltYk15aW9xdExoVVlaeGRKOXdHTmhWN01LSHZnWnNRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLXdpbjMyLXg2NC1tc3ZjIjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtd2luMzIteDY0LW1zdmNANC4zLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1NdnJmMmtYVy95ZVcvT1RlelpsQ0dPaXJYUmNVdUxJQngvNVkxMkJhUE03d0pvcnlHNmRmUy9OSkw4YUJQcXRURXgvVm00VDR2S3pGVWNLRFQrVEtVQT09Il0sCgogICAgIkB0YWlsd2luZGNzcy9wb3N0Y3NzIjogWyJAdGFpbHdpbmRjc3MvcG9zdGNzc0A0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYWxsb2MvcXVpY2stbHJ1IjogIl41LjIuMCIsICJAdGFpbHdpbmRjc3Mvbm9kZSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUiOiAiNC4zLjAiLCAicG9zdGNzcyI6ICJeOC41LjEwIiwgInRhaWx3aW5kY3NzIjogIjQuMy4wIiB9IH0sICJzaGE1MTItSm0wNVRqeCs5eUNMR3Y1cXcxYys4NFBzZHM4TW55ckVRWUNCK0ZGazJsZ0dpVWpsUnFkeGtlNG1WVHVZcmoyeG5WWnFLaW0yQXByNXlTdVFSWUF3L3c9PSJdLAoKICAgICJAdHlieXMvd2FzbS11dGlsIjogWyJAdHlieXMvd2FzbS11dGlsQDAuMTAuMiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi40LjAiIH0gfSwgInNoYTUxMi1Sb0J2SjJYMHd1S2xXRklqcndmZkd3MUlxWkhLUXF6SWNoS2FhZFpaZm5OcHNBWXAybU0waDM2SnRQQ2pOREFIR2dZZXovMTV1TUJwZkd3Y2hoaU1nZz09Il0sCgogICAgIkB0eXBlcy9jaGFpIjogWyJAdHlwZXMvY2hhaUA1LjIuMyIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAdHlwZXMvZGVlcC1lcWwiOiAiKiIsICJhc3NlcnRpb24tZXJyb3IiOiAiXjIuMC4xIiB9IH0sICJzaGE1MTItTXc1NThvZUE5ZkZidjY1L3k0bUh0WERzOWJQbkZNWkFML2p4ZFBGVXBPSEhJWFg5MW1jZ0VIYlM1TGFocitwd1pGUjhBN0dRbGVSV2VJNmNHRkMyVUE9PSJdLAoKICAgICJAdHlwZXMvZGVlcC1lcWwiOiBbIkB0eXBlcy9kZWVwLWVxbEA0LjAuMiIsICIiLCB7fSwgInNoYTUxMi1jOWg5ZFZWTWlnTVBjNGJ3VHZDNWR4cXRxSlp3UVBlUHNXalBscFNPbm9qYm9yNnBHcWRrNTQxbGZBN0FxRlFyNXBCMUJSZHEwanVZOWRiODFCd3lGdz09Il0sCgogICAgIkB0eXBlcy9lc3RyZWUiOiBbIkB0eXBlcy9lc3RyZWVAMS4wLjkiLCAiIiwge30sICJzaGE1MTItR2hkUGd5MWVsNC9JbVAwNVgwNVV3NGN3Mi9NOTNCQ1VtbkV2V1pOU3RsQ3pFS01FNEZraytZcG9BNU9pSE5RbW9TN0NhZmI4WGEzUHlhOG0xUXJ6ZWc9PSJdLAoKICAgICJAdHlwZXMvbm9kZSI6IFsiQHR5cGVzL25vZGVAMjIuMTkuMTkiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidW5kaWNpLXR5cGVzIjogIn42LjIxLjAiIH0gfSwgInNoYTUxMi1keWgveE8yRmg1YllyZldhYXFHclJRUUdrTmRtWXc2QW1hQVV2WWVVTU5UV1F0dmI3OTZpa0xkbVRjaFJtT2xPaUlKMVREWGZXZ1Z4MVFrVWxRNkhldz09Il0sCgogICAgIkB0eXBlcy9yZWFjdCI6IFsiQHR5cGVzL3JlYWN0QDE5LjIuMTUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiY3NzdHlwZSI6ICJeMy4yLjIiIH0gfSwgInNoYTUxMi1lUndjR05IdmUrRThxdEVRU1NSbDZ1cmgrckZvcDR2OGdtNk84ckd2MjVDb2RidkZkTGpBMXZWUTFLa2lGRTB3MFVQT25iOHREaUZLTDVscDBydFk1UT09Il0sCgogICAgIkB0eXBlcy9yZWFjdC1kb20iOiBbIkB0eXBlcy9yZWFjdC1kb21AMTkuMi4zIiwgIiIsIHsgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJAdHlwZXMvcmVhY3QiOiAiXjE5LjIuMCIgfSB9LCAic2hhNTEyLWpwMkwvZVk2Zm4rS2dWVlFBT3FZSXRiRjBWWS9ZQXBlNU16MkYwYXlrU084Z3gzMWJZQ1p5dlNlWXhDSEt2ekhHNWVaamMrenlhUzVCckJXeWEyK2tRPT0iXSwKCiAgICAiQHZpdGVzdC9leHBlY3QiOiBbIkB2aXRlc3QvZXhwZWN0QDQuMS43IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBzdGFuZGFyZC1zY2hlbWEvc3BlYyI6ICJeMS4xLjAiLCAiQHR5cGVzL2NoYWkiOiAiXjUuMi4yIiwgIkB2aXRlc3Qvc3B5IjogIjQuMS43IiwgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjciLCAiY2hhaSI6ICJeNi4yLjIiLCAidGlueXJhaW5ib3ciOiAiXjMuMS4wIiB9IH0sICJzaGE1MTItMVIrdHcwb3J0SEViWkRHTXltbStwTjcvQUZRL1JrRkZkdGQ3RU4rVkJweW5LbUxiUDhBM3JwRVhkc2hCSjcrOGhROXpCSmgvaTFzMHlLTnR4QW5VN3c9PSJdLAoKICAgICJAdml0ZXN0L21vY2tlciI6IFsiQHZpdGVzdC9tb2NrZXJANC4xLjciLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHZpdGVzdC9zcHkiOiAiNC4xLjciLCAiZXN0cmVlLXdhbGtlciI6ICJeMy4wLjMiLCAibWFnaWMtc3RyaW5nIjogIl4wLjMwLjIxIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIm1zdyI6ICJeMi40LjkiLCAidml0ZSI6ICJeNi4wLjAgfHwgXjcuMC4wIHx8IF44LjAuMCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIm1zdyIsICJ2aXRlIl0gfSwgInNoYTUxMi12WTdudWFtS2dmdnBBMUtvYTNvWUl3L2s3RDZrWm5wR3lOTVpXOGxvb3cyYnNCWWxhMVRGZHFUYVhuY1dkUm40cGd3TnMrOTBSaG5YaEpTY0R3UWVKQT09Il0sCgogICAgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6IFsiQHZpdGVzdC9wcmV0dHktZm9ybWF0QDQuMS43IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRpbnlyYWluYm93IjogIl4zLjEuMCIgfSB9LCAic2hhNTEyLXVtZ0NhclRPWVFXSWFETXZHRFJaaWorNmI5b1ZlTEl5SnpmTitBUzg4ZTBaT1UzUVRnTk5TVHRqUU9wY3ZXcjNucDFOMGo0V2daaitzYjNvWUJEc2N3PT0iXSwKCiAgICAiQHZpdGVzdC9ydW5uZXIiOiBbIkB2aXRlc3QvcnVubmVyQDQuMS43IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjciLCAicGF0aGUiOiAiXjIuMC4zIiB9IH0sICJzaGE1MTItQmFwam1BUTJhSTc4V2RNRWZlVVdpdm5mVnpCK1ZQR3dXUlFjSkUwT1VxN3FFZUVjQnNDU2YrMFQ1aVJFQk5FNW5CYjR3QTVZYTBXNklBK3NnaGRFRnc9PSJdLAoKICAgICJAdml0ZXN0L3NuYXBzaG90IjogWyJAdml0ZXN0L3NuYXBzaG90QDQuMS43IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6ICI0LjEuNyIsICJAdml0ZXN0L3V0aWxzIjogIjQuMS43IiwgIm1hZ2ljLXN0cmluZyI6ICJeMC4zMC4yMSIsICJwYXRoZSI6ICJeMi4wLjMiIH0gfSwgInNoYTUxMi1aYWNMemphK1RtSmVaMWgxNHhXMkZCL1dwZWltVUQzaGFCWFFQeUpxeHZvOGpRVG1mZUE4enY1OG10ak4yQzdFSFhaRFlWY1ZZZFltQXhqa1dWdktDdz09Il0sCgogICAgIkB2aXRlc3Qvc3B5IjogWyJAdml0ZXN0L3NweUA0LjEuNyIsICIiLCB7fSwgInNoYTUxMi1rYmtJNUxNV2FreXVUSXZzNmZVSjVxZElWYjFYVktzWUpBVDRPSjkzOGNITVJPWU1TZm1vUWRaeTBhYUFuamJiYzhGNjF2a29UcXovQXorL0hpSXU1UT09Il0sCgogICAgIkB2aXRlc3QvdXRpbHMiOiBbIkB2aXRlc3QvdXRpbHNANC4xLjciLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHZpdGVzdC9wcmV0dHktZm9ybWF0IjogIjQuMS43IiwgImNvbnZlcnQtc291cmNlLW1hcCI6ICJeMi4wLjAiLCAidGlueXJhaW5ib3ciOiAiXjMuMS4wIiB9IH0sICJzaGE1MTItVDUzMldCdTc5MWNCeEpsQ2w2U08rSjE0bDgxRFF4NnVRSG0xYlFibUNEWTducWxFSWdremEvVUZuU0JOYVV0U2Y0MXVubGRERmpkT0JZRVFDNGI1SHc9PSJdLAoKICAgICJhY29ybiI6IFsiYWNvcm5AOC4xNi4wIiwgIiIsIHsgImJpbiI6IHsgImFjb3JuIjogImJpbi9hY29ybiIgfSB9LCAic2hhNTEyLVVWSnlFOU10dE9zQlFJREt3MXNrYjluQXdRdVI1d3VHRDMrODJLNkpnSmxtL1krS0k5Mm9Oc01OR1pDWWREc1Z0UkhTYWswcGNWNURubzUrNGpoOXN3PT0iXSwKCiAgICAiYW5zaS1yZWdleCI6IFsiYW5zaS1yZWdleEA1LjAuMSIsICIiLCB7fSwgInNoYTUxMi1xdUpRWGxUU1VHTDJMSDlTVVhvOFZ3c1k0c29hbmhnbzZMTlNtODRFMUxCY0U4czNPMHdwZGlSenlSOXovWlpKTWxNV3YzN3FPT2I5cGRKbE1VRUtGUT09Il0sCgogICAgImFuc2ktc3R5bGVzIjogWyJhbnNpLXN0eWxlc0A0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjb2xvci1jb252ZXJ0IjogIl4yLjAuMSIgfSB9LCAic2hhNTEyLXpiQjlyQ0pBVDFyYmppVkRiMmhxS0ZITllMeGd0azhOVVJ4WjNJWndEM0Y2TnR4YlhaUUNublNpMUxreCtJRG9oZFBsRnAyMjJ3VkFMSWhlWkpRU0VnPT0iXSwKCiAgICAiYXNzZXJ0aW9uLWVycm9yIjogWyJhc3NlcnRpb24tZXJyb3JAMi4wLjEiLCAiIiwge30sICJzaGE1MTItSXppOFJRY2ZmcUNlTlZnRmlnS2xpMXNza2xJYnBIbkNZYzZBa25YR1lvQjZnckpxeWVieTdqdjEySlVRZ21UQW5JRG5iY2sxdXhrc1Q0ZHpOM1BXQkE9PSJdLAoKICAgICJiYXNlbGluZS1icm93c2VyLW1hcHBpbmciOiBbImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZ0AyLjEwLjMxIiwgIiIsIHsgImJpbiI6IHsgImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZyI6ICJkaXN0L2NsaS5janMiIH0gfSwgInNoYTUxMi1NdWpZTzNlUDcydXZtU0UwaTR3bHRzb2RSZklwWkFUUDNqdnpSTlJHR3hneklkN2FWb2NWSkpWM25mMDFxbnp6S0ZHeFFWQzlicFd4bDVjanhUci83UT09Il0sCgogICAgImJ1ZmZlci1mcm9tIjogWyJidWZmZXItZnJvbUAxLjEuMiIsICIiLCB7fSwgInNoYTUxMi1FK1hRQ1J3U2JhYWlDaHR2Nms2RHdnYytieCtCczZ2dUtKSEhsNWtveC9CYUtiaGlYenFRT3dLNGNPMjJ5RWxHcDJPQ21qd1ZoVDNIbXhneVBHbkpmUT09Il0sCgogICAgImNhbml1c2UtbGl0ZSI6IFsiY2FuaXVzZS1saXRlQDEuMC4zMDAwMTc5MyIsICIiLCB7fSwgInNoYTUxMi1pd1NzWVdhQ09vaDI2Y1Y4TndOUlZpSGxyZlV2WXNIRGZSVmNidG13MEtnNlBKSVpaWHdNa2oxNDQyRllMQkdrZVVmMWp1QXNVM0RUZnhXNTc5bXJQQT09Il0sCgogICAgImNoYWkiOiBbImNoYWlANi4yLjIiLCAiIiwge30sICJzaGE1MTItTlVQUmx1T2ZPaVRLQkt2V1B0U0Q0UGhGdldDcU9pMEJHU3ROV3M1N1g5anM3WEdUcHJTbUZvejVGMHRXaFI0V1BqTmVSOWpYcWRDNy9VcFNKVG5sUmc9PSJdLAoKICAgICJjaGFsayI6IFsiY2hhbGtANC4xLjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiYW5zaS1zdHlsZXMiOiAiXjQuMS4wIiwgInN1cHBvcnRzLWNvbG9yIjogIl43LjEuMCIgfSB9LCAic2hhNTEyLW9LbmJoRnlSSVhwVXVlejhpQk1teUVhNG5iajRJT1F5dWhjL3d5OWtZNy9XVlBjd0lPOVZBNjY4UHU4UmtPNyswRzc2U0xST2V5dzlDcFEwNjFpNG1BPT0iXSwKCiAgICAiY2xpZW50LW9ubHkiOiBbImNsaWVudC1vbmx5QDAuMC4xIiwgIiIsIHt9LCAic2hhNTEyLUlWM091MGpTTXpacmQzcFo0OG5Ma1Q5REE3QWcxcG5QemFpUWhwVzdjM1JiY3FxenZ6elZ1K0w4Z2ZxTXAvOElNMk1RdFNpcWFDeHJyY2Z1OEk4ck1BPT0iXSwKCiAgICAiY2xpdWkiOiBbImNsaXVpQDguMC4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInN0cmluZy13aWR0aCI6ICJeNC4yLjAiLCAic3RyaXAtYW5zaSI6ICJeNi4wLjEiLCAid3JhcC1hbnNpIjogIl43LjAuMCIgfSB9LCAic2hhNTEyLUJTZU5ueXVzNzVDNC8vTlE5Z1F0MS9jc1RYeW8vOFNiK2FmTEFrekFwdEZ1TXNvZDlIRm9rR051ZFpwaS9vUVY3M2huVksrc1IrNVBWUk1kK0RyN1lRPT0iXSwKCiAgICAiY2xzeCI6IFsiY2xzeEAyLjEuMSIsICIiLCB7fSwgInNoYTUxMi1lWW0wUVdCdFVyQldaV0cwZDM4Nk9HQXcxNlo5OTVQaU9WbzJCN2JqV1NiSGVkR2w1ZTBaV2FxNjVrT0dnVVNOZXNFSURrQjlJU2JUZy9KSzlkaENaQT09Il0sCgogICAgImNvbG9yLWNvbnZlcnQiOiBbImNvbG9yLWNvbnZlcnRAMi4wLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiY29sb3ItbmFtZSI6ICJ+MS4xLjQiIH0gfSwgInNoYTUxMi1SUkVDUHNqN2l1L3hiNW9LWWNzRkhTcHBGTm5zai81Mk9WVFJLYjR6UDVvblh3VkYzelZtbVRvTmNPZkdDK0NSRHBmSy9VNTg0Zk1nMzhaSENhRWxLUT09Il0sCgogICAgImNvbG9yLW5hbWUiOiBbImNvbG9yLW5hbWVAMS4xLjQiLCAiIiwge30sICJzaGE1MTItZE95KzNBdVczYTJ3TmJaSEl1TVpwVGNnakd1TFUvdUJML3ViY1pGOU9YYkRvOGZmNE84eVZwNUJmMGVmUzh1RW9ZbzVxNEZ4N2RZOU9nUUdYZ0FzUUE9PSJdLAoKICAgICJjb21tYW5kZXIiOiBbImNvbW1hbmRlckAyLjIwLjMiLCAiIiwge30sICJzaGE1MTItR3BWa21NOHZGMnZRVWtqMkx2Wm1EMzVKeGVKT0xDd0o5Y1VrdWd5azJudWhidjMrbUp2cExZWXQrMCtVU014RStvaitleS9sSkVuaFp3NzV4L09NY1E9PSJdLAoKICAgICJjb25jdXJyZW50bHkiOiBbImNvbmN1cnJlbnRseUA5LjIuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjaGFsayI6ICI0LjEuMiIsICJyeGpzIjogIjcuOC4yIiwgInNoZWxsLXF1b3RlIjogIjEuOC4zIiwgInN1cHBvcnRzLWNvbG9yIjogIjguMS4xIiwgInRyZWUta2lsbCI6ICIxLjIuMiIsICJ5YXJncyI6ICIxNy43LjIiIH0sICJiaW4iOiB7ICJjb25jIjogImRpc3QvYmluL2NvbmN1cnJlbnRseS5qcyIsICJjb25jdXJyZW50bHkiOiAiZGlzdC9iaW4vY29uY3VycmVudGx5LmpzIiB9IH0sICJzaGE1MTItZnNmck8wTXhWNjRabm95OC9sMXZWSWpqSGEyOVNaeXlxUGdRQndoaURjYVc4d0pjMlczWFdWT0d4NE0zb0pCbnYvemRVWklJcDFnRGVTOThHelA4Tmc9PSJdLAoKICAgICJjb252ZXJ0LXNvdXJjZS1tYXAiOiBbImNvbnZlcnQtc291cmNlLW1hcEAyLjAuMCIsICIiLCB7fSwgInNoYTUxMi1LdnA0NTlIclYyRkVKMUNBc2kxS3UrTVkza2FzSDE5VEZ5a1R6MnhXbU1lcTZiazJOVTNYWHZmSitRNjFtMHhrdFd3dCsxSFNZZjNKWnNUbXMzYVJKZz09Il0sCgogICAgImNzc3R5cGUiOiBbImNzc3R5cGVAMy4yLjMiLCAiIiwge30sICJzaGE1MTItejFIR0tjWXkyeEE4QUdRZndybjBQQXkrUEI3WC9HU2ozVVZKVzlxS3luNDN4V2ErZ2w1blhtVTRxcUxNUnpXVkxGQzhLdXNVWDhULzBrQ2lPWXBBSVE9PSJdLAoKICAgICJkYXRlLWZucyI6IFsiZGF0ZS1mbnNANC4yLjEiLCAiIiwge30sICJzaGE1MTItMzdSaFNkeGFHMXN1ZW42VkRDemE2ck5yUWZvb3lRaDU3SEZWUHdRR0VxMlFXbGlWTHpQUVo4T2EwMTd3ZU91K0haQ256STdOM1BmL3d5b0JLZkVxckE9PSJdLAoKICAgICJkYXRlLWZucy1qYWxhbGkiOiBbImRhdGUtZm5zLWphbGFsaUA0LjEuMC0wIiwgIiIsIHt9LCAic2hhNTEyLWhUSVAveit0K3FLd0JEY21tc25taldUZHV4Q2crNUtmZHFXUXZiMlgvOEM5K2tuWVk2ZXBOL3BmeGREdXlWbFNWZUZ6MHNNNWVFZndJVVE3MFU0Y2tnPT0iXSwKCiAgICAiZGV0ZWN0LWxpYmMiOiBbImRldGVjdC1saWJjQDIuMS4yIiwgIiIsIHt9LCAic2hhNTEyLUJ0ajJCT09PODNvM1d5SDU5ZThNZ1hzeEVRVmNhcmtVT3BFWXJ1YkIwdXJ3bk4xMHlRMzY0cnNpQnlVMTFuWmxxV1labTA1aS9vZjdpbzRtemloQnRRPT0iXSwKCiAgICAiZW1vamktcmVnZXgiOiBbImVtb2ppLXJlZ2V4QDguMC4wIiwgIiIsIHt9LCAic2hhNTEyLU1Tall6Y1dOT0EwZXdBSHB6ME14cFlGdndnNnlqeTFORzN4dGVvcXo2NDRWQ28vUlBnbnIxL0dHdCtpYzNpSlR6UThFdTNUZE0xNFNhd25WVW1HRTZBPT0iXSwKCiAgICAiZW5oYW5jZWQtcmVzb2x2ZSI6IFsiZW5oYW5jZWQtcmVzb2x2ZUA1LjIxLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZ3JhY2VmdWwtZnMiOiAiXjQuMi40IiwgInRhcGFibGUiOiAiXjIuMy4zIiB9IH0sICJzaGE1MTItYU5uR0N2YkovUkl5V28xSXVoTmRWam5ORitFakg5d3B6cE5IdCtjaS9tOUhlOUxKdlVOOHdyQ2NYanA5Y1dzR05BdXZTcFZGVHgvdnJhQUZROHFHalE9PSJdLAoKICAgICJlcy1tb2R1bGUtbGV4ZXIiOiBbImVzLW1vZHVsZS1sZXhlckAyLjEuMCIsICIiLCB7fSwgInNoYTUxMi1uMjd6VFlNall1MWFqNE1qQ1d6U1A3RzlyNzV1dHNhb2M4bTYxd2VLK1c4Sk1CR0dReWJkNDNHc3RDWFozV05tU0Z0R1Q5d2k1OXFRVFc2bWhUUjVMUT09Il0sCgogICAgImVzYnVpbGQiOiBbImVzYnVpbGRAMC4yNS40IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGVzYnVpbGQvYWl4LXBwYzY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9hbmRyb2lkLWFybSI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvYW5kcm9pZC1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvYW5kcm9pZC14NjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2Rhcndpbi1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZGFyd2luLXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZnJlZWJzZC1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZnJlZWJzZC14NjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWFybSI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtYXJtNjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWlhMzIiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWxvb25nNjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LW1pcHM2NGVsIjogIjAuMjUuNCIsICJAZXNidWlsZC9saW51eC1wcGM2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtcmlzY3Y2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtczM5MHgiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbmV0YnNkLWFybTY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9uZXRic2QteDY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9vcGVuYnNkLWFybTY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9vcGVuYnNkLXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvc3Vub3MteDY0IjogIjAuMjUuNCIsICJAZXNidWlsZC93aW4zMi1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvd2luMzItaWEzMiI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvd2luMzIteDY0IjogIjAuMjUuNCIgfSwgImJpbiI6IHsgImVzYnVpbGQiOiAiYmluL2VzYnVpbGQiIH0gfSwgInNoYTUxMi04cGdqTFVjVWpjZ0RnKzJRNE5ZWG5QYm8vdm5jQVk0VW15YUNtMGpaZXZFUnFDSFpJYVd3ZEpIa2Y4WFF0dTRBeFNLQ2R2clViVDBYVXIxSWRaekk4UT09Il0sCgogICAgImVzY2FsYWRlIjogWyJlc2NhbGFkZUAzLjIuMCIsICIiLCB7fSwgInNoYTUxMi1XVWoycWx4YVF0TzRnNlBxNWMyOUdUY1dHRHlkOGl0TDh6VGxpcGdFQ3ozSmVzQWlpT0tvdGQ4SlU2b3RCM1BBQ2dHNnhrSlV5Vmhib01TK2JqZS9qQT09Il0sCgogICAgImVzdHJlZS13YWxrZXIiOiBbImVzdHJlZS13YWxrZXJAMy4wLjMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL2VzdHJlZSI6ICJeMS4wLjAiIH0gfSwgInNoYTUxMi03UlVLZlhnU01Na3p0Nlp1WG1xYXBPdXJMR1BQZmdqNmw5dVJaN2xSR29sdmsweTJ5b2NjMzVMZGN4S0M1UFFaZG4yRE1xaW9BUTJOb1djclRLbW02Zz09Il0sCgogICAgImV4cGVjdC10eXBlIjogWyJleHBlY3QtdHlwZUAxLjMuMCIsICIiLCB7fSwgInNoYTUxMi1rbnZ5ZWF1WWhxak9ZdlE2Nk16blNNczgzd21IckN5Y05FTjZBbysyQWVZRWZ4VUlrdWlWeGRFYTFxbEdFUEsrV2UzbjBUSGlEY2lZU3NDY2dXL0RvQT09Il0sCgogICAgImZkaXIiOiBbImZkaXJANi41LjAiLCAiIiwgeyAicGVlckRlcGVuZGVuY2llcyI6IHsgInBpY29tYXRjaCI6ICJeMyB8fCBeNCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbInBpY29tYXRjaCJdIH0sICJzaGE1MTItdEliWXRaYnVjT3MwQlJHcVBKa3NoSlVZZEwrU0RIN2RWTThnankrRVJwM1dBVWpMRUZKRSswMmthbnlIdHdqV09ud3JLWUJpd0FtTTBwNGtMSkFuWGc9PSJdLAoKICAgICJmc2V2ZW50cyI6IFsiZnNldmVudHNAMi4zLjMiLCAiIiwgeyAib3MiOiAiZGFyd2luIiB9LCAic2hhNTEyLTV4b0RmWCtmTDdmYUFUbmFnbVdQcGJGdHdoL1I3N1dtTU1xcUhHUzY1QzN2dkIwWUhyZ0YrQjFZbVozNDQxdE1qNW42M2swMjEyWE5vSnd6bGhmZlF3PT0iXSwKCiAgICAiZ2V0LWNhbGxlci1maWxlIjogWyJnZXQtY2FsbGVyLWZpbGVAMi4wLjUiLCAiIiwge30sICJzaGE1MTItRHlGUDNCTS8zWUhUUU9DVUwvdzBPWkhSMGxwS2VHcnhvdGNIV2NxTkVkbmx0cUZ3WFZmaEVCUTk0ZUlvMzRBZlFwbzByR2tpNGN5SWlmdFkwNmgyRmc9PSJdLAoKICAgICJncmFjZWZ1bC1mcyI6IFsiZ3JhY2VmdWwtZnNANC4yLjExIiwgIiIsIHt9LCAic2hhNTEyLVJiSjUvam1GY05OQ2NEVjVvOWVUbkJMSi9Ic3pXVjBQNzNiYytGZjRuUy9ySmorWWFTNklHeWlPTDBWb0JZWCtsMVdybDNrNjNoL0tySCtuaEowWHZRPT0iXSwKCiAgICAiaGFzLWZsYWciOiBbImhhcy1mbGFnQDQuMC4wIiwgIiIsIHt9LCAic2hhNTEyLUV5a0pUL1ExS2pUV2N0cHBnSUFnZlNPMHRLVnVaVWpoZ01yMTdrcVR1bU1sNkFmdjNFSVNsZVU3cVpVem9YREZUQUhUREM0Tk9vRy9aeFUzRXZsTVBRPT0iXSwKCiAgICAiaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQiOiBbImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50QDMuMC4wIiwgIiIsIHt9LCAic2hhNTEyLXp5bW01K3Urc0NzU1d5RDlxTmFlalYzREZ2aENLY2xLZGl6WWFKVXVIQTgzUkxqYjduU3VHbmRkQ0hHdjBoaytLWTdCTUFsc1dlSzRVZWc2RVY2WFFnPT0iXSwKCiAgICAiaml0aSI6IFsiaml0aUAyLjcuMCIsICIiLCB7ICJiaW4iOiB7ICJqaXRpIjogImxpYi9qaXRpLWNsaS5tanMiIH0gfSwgInNoYTUxMi1BQy83Sm9mSnZaR3JybmVXTmFFbkplT0xVeCtKbEd0N3ROYTB3WmlSUFQ0TVkxd21mS2p0Mis2TzJwMnV6Mitza2xsOE9aWm1KTU5xZWtlN2tLYk5nUT09Il0sCgogICAgImxpYnBob25lbnVtYmVyLWpzIjogWyJsaWJwaG9uZW51bWJlci1qc0AxLjEyLjQxIiwgIiIsIHt9LCAic2hhNTEyLWxzbU1tR1hCeFhJSy9WTUxFajBrTDZNdFVzMWtCR2oxblRDemk2emdRb0cxREV3cXd0MkRReUh4Y0x5a2NlSXhBbmZFM2h5YTdOdUloNlBwQzZTM2ZBPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzIjogWyJsaWdodG5pbmdjc3NAMS4zMi4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImRldGVjdC1saWJjIjogIl4yLjAuMyIgfSwgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAibGlnaHRuaW5nY3NzLWFuZHJvaWQtYXJtNjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1kYXJ3aW4tYXJtNjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1kYXJ3aW4teDY0IjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtZnJlZWJzZC14NjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1saW51eC1hcm0tZ251ZWFiaWhmIjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251IjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtbXVzbCI6ICIxLjMyLjAiLCAibGlnaHRuaW5nY3NzLWxpbnV4LXg2NC1nbnUiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtbXVzbCI6ICIxLjMyLjAiLCAibGlnaHRuaW5nY3NzLXdpbjMyLWFybTY0LW1zdmMiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy13aW4zMi14NjQtbXN2YyI6ICIxLjMyLjAiIH0gfSwgInNoYTUxMi1OWFlCemluTnJibGZyYVBHeXJiUG9EMTlDMWg5bGZJLzFtemdXWXZYVVRlNDE0R3ovWDFGRDJYQlpTWk03clJUck1BOEpMM090QWFHaWZySUtoUTV5UT09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1hbmRyb2lkLWFybTY0IjogWyJsaWdodG5pbmdjc3MtYW5kcm9pZC1hcm02NEAxLjMyLjAiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItWUs3L0NsVHQ0a0FLMHZvNnczWCtQbm0wRDJjZjJ2UEhiaE9YZG9OdGkxR2EwYWwxUDRUQlpod2pBVHZqTndMRUJDbkt2akpjMmpRZ0hYSDBORXdsQWc9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtZGFyd2luLWFybTY0IjogWyJsaWdodG5pbmdjc3MtZGFyd2luLWFybTY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVJ6ZUc5SnU1YmFnMkJ2MS9sd2xWSnZCRTNxNlR0WHNrZFpMTEN5Zmc1cHQrSEx6OUJxbElDTzdMWk03VkhOVFRuLzVQUmhIRkJTams1bGM0Y21zY1BRPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzLWRhcndpbi14NjQiOiBbImxpZ2h0bmluZ2Nzcy1kYXJ3aW4teDY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1VK1FzQnAybS9zMndxcFVZVC82d25sYWdkWmJ0WmRuZFNtdXQvTkpxbENjTUxUV3A1bXVDcklEK0s1VUo2anFEMkJGc2hlakNZWG5pUERiTmg3M1Y4dz09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1mcmVlYnNkLXg2NCI6IFsibGlnaHRuaW5nY3NzLWZyZWVic2QteDY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSkNUaWdlZEVrc1prM3RIVFR0aG5NZFZmR2Y2MUZreThKaTJFNFlqVVRFUVgxNHhpeS9sVHpYbnUxdndpWmUzYlllMHErU3BzU0gvQ1RlRFhLNldIaWc9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtLWdudWVhYmloZiI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LWFybS1nbnVlYWJpaGZAMS4zMi4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTIteDZybm5wUmEyR0wwelFPa3Q2cnRzM1lEUHpkdUxwV3Z3QUY2RU1oWEZWWlhENHRQckJrRUZxekdvd3pDc0lXc1BqcVNLK3R5TkVPRFVCWGVlVkhTa3c9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251IjogWyJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItMG5uTXlveU9MUkpYZmJNT2lsYVNSY0xIM0p3NXo5SEROR2ZUL2d3Q1BnYURqbngwaTh3N3ZCekZMRlIxZjZDTUxLRjhnVmJlYm1rVU4zZmEva1FKcFE9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtbXVzbCI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LWFybTY0LW11c2xAMS4zMi4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1VcFFrb2VucjRVSkV6Z1ZJWXBJODBsREZ2Um1QVmc2b3Fib05IZm9INENRSWZOQStIT3JaN01vN0taUDAyZEM2TGpnaFBRSmVCc3ZYaEpvZC93bklCZz09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtZ251IjogWyJsaWdodG5pbmdjc3MtbGludXgteDY0LWdudUAxLjMyLjAiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1WN1FyNTJJaFptZEtQVnIrVnR3OG8rV0xzUUpZQ1RkOGxvSWZwRGFNUldHVVpmQk9ZRUpleUpJa3FHSURNWlB3UHgyNHBVTWZ3U3h4SThwaHIvTWJPQT09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtbXVzbCI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LXg2NC1tdXNsQDEuMzIuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLWJZY0xwK1ZiMGF3c2lYZy84MHVDUmV6Q1lITmcxL2wzbXQwZ3pIbldWOVhQMVc1c0thNS9UQ2RHV2FSL3pCTTJQZUYvSGJzUXYvajJVUk5PaVZ1eFdnPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzLXdpbjMyLWFybTY0LW1zdmMiOiBbImxpZ2h0bmluZ2Nzcy13aW4zMi1hcm02NC1tc3ZjQDEuMzIuMCIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItOFNiQzhCUjQwcFM2YmFDTThzYnRZRFN3RVZRZDRKbEZUT2xhRDNnV0dIZlRoVGNBQm5OREJkYTZlVFplcWJvZmFsSUpoRngwcUt6Z0hKbWNQVG5HZHc9PSJdLAoKICAgICJsaWdodG5pbmdjc3Mtd2luMzIteDY0LW1zdmMiOiBbImxpZ2h0bmluZ2Nzcy13aW4zMi14NjQtbXN2Y0AxLjMyLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1BbXE5Qi9Tb1pZZERpMWtGcm9qbm9xUEx4WWhRNFdvNVhpTDhFVkpyVnNCOEFSb0MxUFdXNlZHdFQwV0tDZW1qeThhQytsb3VKbmpTN1UxOHgzYjA2UT09Il0sCgogICAgIm1hZ2ljLXN0cmluZyI6IFsibWFnaWMtc3RyaW5nQDAuMzAuMjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjIjogIl4xLjUuNSIgfSB9LCAic2hhNTEyLXZkMkY0WVV5RVhLR2NMSG9xK1RFeUNqeHVlU2VIbkZ4eXlqTnA4MHlnMFhWNHZVaG5EZXIvbHZ2bHFNL2FyQjViWFFONUsyLzNvaW55Q1J5eDhUMkNRPT0iXSwKCiAgICAibmFub2lkIjogWyJuYW5vaWRAMy4zLjEyIiwgIiIsIHsgImJpbiI6IHsgIm5hbm9pZCI6ICJiaW4vbmFub2lkLmNqcyIgfSB9LCAic2hhNTEyLVpCOVJILzM5cXBxNVZ1NlkrTm1VYUZoUVI2cHArTTJYdDc2WEJuRXdEYUdjVkFxaGx2eHJsM0IyYktTNUQzTkgzUVI3NnYzYVNyS2FGL0tpeTdsRXRRPT0iXSwKCiAgICAibmV4dCI6IFsibmV4dEAxNi4yLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQG5leHQvZW52IjogIjE2LjIuNiIsICJAc3djL2hlbHBlcnMiOiAiMC41LjE1IiwgImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZyI6ICJeMi45LjE5IiwgImNhbml1c2UtbGl0ZSI6ICJeMS4wLjMwMDAxNTc5IiwgInBvc3Rjc3MiOiAiOC40LjMxIiwgInN0eWxlZC1qc3giOiAiNS4xLjYiIH0sICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBuZXh0L3N3Yy1kYXJ3aW4tYXJtNjQiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy1kYXJ3aW4teDY0IjogIjE2LjIuNiIsICJAbmV4dC9zd2MtbGludXgtYXJtNjQtZ251IjogIjE2LjIuNiIsICJAbmV4dC9zd2MtbGludXgtYXJtNjQtbXVzbCI6ICIxNi4yLjYiLCAiQG5leHQvc3djLWxpbnV4LXg2NC1nbnUiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy1saW51eC14NjQtbXVzbCI6ICIxNi4yLjYiLCAiQG5leHQvc3djLXdpbjMyLWFybTY0LW1zdmMiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy13aW4zMi14NjQtbXN2YyI6ICIxNi4yLjYiLCAic2hhcnAiOiAiXjAuMzQuNSIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJAb3BlbnRlbGVtZXRyeS9hcGkiOiAiXjEuMS4wIiwgIkBwbGF5d3JpZ2h0L3Rlc3QiOiAiXjEuNTEuMSIsICJiYWJlbC1wbHVnaW4tcmVhY3QtY29tcGlsZXIiOiAiKiIsICJyZWFjdCI6ICJeMTguMi4wIHx8IDE5LjAuMC1yYy1kZTY4ZDJmNC0yMDI0MTIwNCB8fCBeMTkuMC4wIiwgInJlYWN0LWRvbSI6ICJeMTguMi4wIHx8IDE5LjAuMC1yYy1kZTY4ZDJmNC0yMDI0MTIwNCB8fCBeMTkuMC4wIiwgInNhc3MiOiAiXjEuMy4wIiB9LCAib3B0aW9uYWxQZWVycyI6IFsiQG9wZW50ZWxlbWV0cnkvYXBpIiwgIkBwbGF5d3JpZ2h0L3Rlc3QiLCAiYmFiZWwtcGx1Z2luLXJlYWN0LWNvbXBpbGVyIiwgInNhc3MiXSwgImJpbiI6IHsgIm5leHQiOiAiZGlzdC9iaW4vbmV4dCIgfSB9LCAic2hhNTEyLXFPVmdLSmcxK0F0MTVOcGVVUCtlSmdDSHZUQ2dYc29nd2VxODdSaS9JeDdQa3FRSGc0c2RhWG1TRnFLbGdhSVhFNGtXMGcyNUxFNjhXODdVQU5sSHR3PT0iXSwKCiAgICAib2J1ZyI6IFsib2J1Z0AyLjEuMSIsICIiLCB7fSwgInNoYTUxMi11VHFGOU11UHJhQVErSXNuUGYzNjZSRzRjUDlSdFVpN01MTzFOM0tFYyt3YjBhNnlLcGVMMGxtazJJQjFqWTVLSFBBbFRjNlQvSlJkQy9ZcXhITndrUT09Il0sCgogICAgInBhdGhlIjogWyJwYXRoZUAyLjAuMyIsICIiLCB7fSwgInNoYTUxMi1XVWpHY0FxUDFnUWFjb1FlK09CSnNGQTdMZDREeVh1VUlqWjVjYzc1Y0xIdko3ZHROc1R1Z3BoeElBRHdzcFMrQXJhQVVlUENLclNWdFBMRmovRjg4dz09Il0sCgogICAgInBpY29jb2xvcnMiOiBbInBpY29jb2xvcnNAMS4xLjEiLCAiIiwge30sICJzaGE1MTIteGNlSDJzbmh0YjVNOWxpcURzbUV3NTZsZTM3Nm1UWmtFWC9qRWIvUnhORnllZ051bDdlTnNsQ1hQOUZEai9MY3UwWDhLRXlNY2VQMm50cGFIckRFVkE9PSJdLAoKICAgICJwaWNvbWF0Y2giOiBbInBpY29tYXRjaEA0LjAuNCIsICIiLCB7fSwgInNoYTUxMi1RUDg4QkFLdk1hbS8zTnhINnZqMm8yMVI2TWp4WlVBZDZubHdBUy9wbkd2TjlJVkxvY0xIeEdZSXpGaGc2ZlVRKzV0aDZQNGR2NGVXOWpYM0RTSWo3QT09Il0sCgogICAgInBvc3Rjc3MiOiBbInBvc3Rjc3NAOC41LjE1IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIm5hbm9pZCI6ICJeMy4zLjEyIiwgInBpY29jb2xvcnMiOiAiXjEuMS4xIiwgInNvdXJjZS1tYXAtanMiOiAiXjEuMi4xIiB9IH0sICJzaGE1MTItRmZSOHNqZDRlbTJUNmZiM0kyTXdBSlU3SFdWTXI5emJhK2VubVFlZVdGZkNibStVT0MvMFg0RFM4WHRwVVRNd1dNR2JqS1lQN3hqZk5la3p5R21CM0E9PSJdLAoKICAgICJyZWFjdCI6IFsicmVhY3RAMTkuMi42IiwgIiIsIHt9LCAic2hhNTEyLXNmV0dHZmF2aTB4cjhQZzBzVnN5SE1BT3ppVllLZ1BMTnJTN2lnK2l2TU5iM3diQ0J3M0t4dGZsc0dCQXdEM2dZUWxFL0FFWnNUTGdUb1JyU0NqYjBRPT0iXSwKCiAgICAicmVhY3QtZGF5LXBpY2tlciI6IFsicmVhY3QtZGF5LXBpY2tlckA5LjE0LjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGRhdGUtZm5zL3R6IjogIl4xLjQuMSIsICJAdGFiYnlfYWkvaGlqcmktY29udmVydGVyIjogIjEuMC41IiwgImRhdGUtZm5zIjogIl40LjEuMCIsICJkYXRlLWZucy1qYWxhbGkiOiAiNC4xLjAtMCIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJyZWFjdCI6ICI+PTE2LjguMCIgfSB9LCAic2hhNTEyLXRCYW9EV2pQd2UwTTVwR3J1bTRIMFNSNkx5aytCTzlvSG5wOUpiS3BHS1cybWxyYU5QZ1A5Qk1mc2c1cFdwd3Jzc0FSbWVxazdZQmwyb1h1dFpUYUhBPT0iXSwKCiAgICAicmVhY3QtZG9tIjogWyJyZWFjdC1kb21AMTkuMi42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInNjaGVkdWxlciI6ICJeMC4yNy4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgInJlYWN0IjogIl4xOS4yLjYiIH0gfSwgInNoYTUxMi0wcHJNSStodkJiUGpzV254REx4bENHeU04UE42VXVXakVVQ1ltWmhPNjd4SVY5WGFzYS9yL3ZEbnErWHlxNExvMjdnOFFTYk81WXpBUnUwRDFTcHMzZz09Il0sCgogICAgInJlcXVpcmUtZGlyZWN0b3J5IjogWyJyZXF1aXJlLWRpcmVjdG9yeUAyLjEuMSIsICIiLCB7fSwgInNoYTUxMi1mR3hFSTcrd3NHOXhydmRqc3JsbUwyMk9NVFRpSFJ3QU1yb2lFZU1ncThnem9MQy9QUXI3UnNSRFNUTFVnL2JaQVp0RitUVklrSGM2LzRSSUtydWkrUT09Il0sCgogICAgInJlc2VsZWN0IjogWyJyZXNlbGVjdEA1LjIuMCIsICIiLCB7fSwgInNoYTUxMi1BZ1ozVU9abTNZbmRmcko0T1lqZ3JUN2JtQ20vMWlxa2p2RWZIL29ZanpoNlBEMnF3NFF1VDNqam5YSXJwZHQ0TVRwTVhjbE1UM2xYYm1SWStYUmFrdz09Il0sCgogICAgInJvbGxkb3duIjogWyJyb2xsZG93bkAxLjAuMiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAb3hjLXByb2plY3QvdHlwZXMiOiAiPTAuMTMyLjAiLCAiQHJvbGxkb3duL3BsdWdpbnV0aWxzIjogIl4xLjAuMCIgfSwgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQHJvbGxkb3duL2JpbmRpbmctYW5kcm9pZC1hcm02NCI6ICIxLjAuMiIsICJAcm9sbGRvd24vYmluZGluZy1kYXJ3aW4tYXJtNjQiOiAiMS4wLjIiLCAiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NCI6ICIxLjAuMiIsICJAcm9sbGRvd24vYmluZGluZy1mcmVlYnNkLXg2NCI6ICIxLjAuMiIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmIjogIjEuMC4yIiwgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LWFybTY0LWdudSI6ICIxLjAuMiIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsIjogIjEuMC4yIiwgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXBwYzY0LWdudSI6ICIxLjAuMiIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1zMzkweC1nbnUiOiAiMS4wLjIiLCAiQHJvbGxkb3duL2JpbmRpbmctbGludXgteDY0LWdudSI6ICIxLjAuMiIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC14NjQtbXVzbCI6ICIxLjAuMiIsICJAcm9sbGRvd24vYmluZGluZy1vcGVuaGFybW9ueS1hcm02NCI6ICIxLjAuMiIsICJAcm9sbGRvd24vYmluZGluZy13YXNtMzItd2FzaSI6ICIxLjAuMiIsICJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjIjogIjEuMC4yIiwgIkByb2xsZG93bi9iaW5kaW5nLXdpbjMyLXg2NC1tc3ZjIjogIjEuMC4yIiB9LCAiYmluIjogeyAicm9sbGRvd24iOiAiLi9iaW4vY2xpLm1qcyIgfSB9LCAic2hhNTEyLW9aeDV6VkR0VkI0NEFXM2VhaWZnRG1sMWdXUkRaR3ZqY2ZkeG9uRTRzd05QRzk4UHJyWGphTy9Lcm5VanpsTW56dENDUlZsVXVlQTFrQ1hoQVJHazZnPT0iXSwKCiAgICAicnhqcyI6IFsicnhqc0A3LjguMiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi4xLjAiIH0gfSwgInNoYTUxMi1kaEtmOTAzVS9QUVpZNmJvTk50QUdkV2JHODVXQWJqVC8xeFlvWklDN0ZBWTB5V2FwT0JRVnNWckRsNThXODYvL2UxVnBNTkJ0UlY0TWFYZmRNeVNGQT09Il0sCgogICAgInNjaGVkdWxlciI6IFsic2NoZWR1bGVyQDAuMjcuMCIsICIiLCB7fSwgInNoYTUxMi1lTnYrV3JWYkt1MWYzdmJZSlQveHRpRjVzeUE1SFBJTXRmOUlnWS9uS2cwc1dxekFVRXZxWS94bTdPY1pjL3FhZkx4L2lPOUZnT21lU0FwNHY1dGkvUT09Il0sCgogICAgInNlbXZlciI6IFsic2VtdmVyQDcuOC4wIiwgIiIsIHsgImJpbiI6IHsgInNlbXZlciI6ICJiaW4vc2VtdmVyLmpzIiB9IH0sICJzaGE1MTItQWNNN2RWLzV1bDRFZWtvUTI5QWdtNXZyaThKTnFSeWozOW8wcXBYNnZERjJHWnJ0dXRabDVSd2dEMVhuWmppVEFmbmNzSmhNSTQ4UVFIM3NOODdZTkE9PSJdLAoKICAgICJzaGFycCI6IFsic2hhcnBAMC4zNC41IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBpbWcvY29sb3VyIjogIl4xLjAuMCIsICJkZXRlY3QtbGliYyI6ICJeMi4xLjIiLCAic2VtdmVyIjogIl43LjcuMyIgfSwgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1kYXJ3aW4tYXJtNjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtZGFyd2luLXg2NCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC1saWJ2aXBzLWRhcndpbi1hcm02NCI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpYnZpcHMtZGFyd2luLXg2NCI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgtYXJtIjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm02NCI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgtcHBjNjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXJpc2N2NjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXMzOTB4IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4bXVzbC1hcm02NCI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXhtdXNsLXg2NCI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpbnV4LWFybSI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC1saW51eC1hcm02NCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC1saW51eC1wcGM2NCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC1saW51eC1yaXNjdjY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLWxpbnV4LXMzOTB4IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLWxpbnV4LXg2NCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC1saW51eG11c2wtYXJtNjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXhtdXNsLXg2NCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC13YXNtMzIiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtd2luMzItYXJtNjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtd2luMzItaWEzMiI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC13aW4zMi14NjQiOiAiMC4zNC41IiB9IH0sICJzaGE1MTItT3U5STVGdDlXTmNDYlhyVTljTWdQQmNDSzhMaXdMcWNieXdXM3Q0b0RWMzduMXB6cHVOTHNZaUFWOGVPRG5qYnRRbFNEd1oyY1VFZVF6NEU1NEhsdGc9PSJdLAoKICAgICJzaGVsbC1xdW90ZSI6IFsic2hlbGwtcXVvdGVAMS44LjMiLCAiIiwge30sICJzaGE1MTItT2JtbklGNGhYTmcxQnFobkhtZ2JERVRGOGRMUENnZ1pXQmprUWZoWnBic3pabll1cjVEVWxqVGNDSGlpNUxDM0o1RTB5ZU8vMUxJTXlIK1V2SFFneXc9PSJdLAoKICAgICJzaWdpbmZvIjogWyJzaWdpbmZvQDIuMC4wIiwgIiIsIHt9LCAic2hhNTEyLXlieDBXTzEvOGJTQkxFV1hadkVkN2dNVzNTbjNKRmxXM1R2WDFuUkViRExSTlFOYWVOTjhXSzBtZUJ3UGRBYU9JN1R0UlJSSm4vRXMxemhyckNIdTdnPT0iXSwKCiAgICAic291cmNlLW1hcCI6IFsic291cmNlLW1hcEAwLjYuMSIsICIiLCB7fSwgInNoYTUxMi1VamdhcHVtV2xiTWhrQmd6VDdZa2M1WVhVVDQ2RjBpS3U4U0dYcTBiY3dQNWR6L2gwUGxqNmVuSnFqejFaYnEybDVXYXFZbnJWYndXT1dNeUYzRjQ3Zz09Il0sCgogICAgInNvdXJjZS1tYXAtanMiOiBbInNvdXJjZS1tYXAtanNAMS4yLjEiLCAiIiwge30sICJzaGE1MTItVVhXTUtoTE93VktiNzI4SVV0UVBYeGZZVSt1c2R5YnRVcksvOHVHRThDUU12cmhPcHd2ekRCd2owUWhTTDdNUWM3dklzSVNCRzhWUTgrSURReHBmUUE9PSJdLAoKICAgICJzb3VyY2UtbWFwLXN1cHBvcnQiOiBbInNvdXJjZS1tYXAtc3VwcG9ydEAwLjUuMjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiYnVmZmVyLWZyb20iOiAiXjEuMC4wIiwgInNvdXJjZS1tYXAiOiAiXjAuNi4wIiB9IH0sICJzaGE1MTItdUJIVTNMM2N6c0l5WVhLWDg4ZmRyR292eGRTQ29UR0RSWjZTWVh0U1J4TFpVekhnNVAvNjZIdDZ1b1VsSHU5RVpvZCtpblhoS28zcVFnd1hVVC95MXc9PSJdLAoKICAgICJzdGFja2JhY2siOiBbInN0YWNrYmFja0AwLjAuMiIsICIiLCB7fSwgInNoYTUxMi0xWE1KRTVmUW8xakdINlkvN2VibndQT0JFa0lFblQ0UUYzMmQ1UjErVlhkWHZlTTBJQk1KdDh6ZmF4WDFQM1FoVndyWWUrNTc2K2prQU50U1MybUJidz09Il0sCgogICAgInN0ZC1lbnYiOiBbInN0ZC1lbnZANC4xLjAiLCAiIiwge30sICJzaGE1MTItUnE3eWJjWDJSdUM1NXI5b2FQVkVXNy94dTN0ajh1NEdlQllIQldDeWNoRnR6TUlyODZBN2UzUFBFQlBUMzdzSFN0S1gzK1RpWC9Gci9BQ21KTFZsTFE9PSJdLAoKICAgICJzdHJpbmctd2lkdGgiOiBbInN0cmluZy13aWR0aEA0LjIuMyIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJlbW9qaS1yZWdleCI6ICJeOC4wLjAiLCAiaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQiOiAiXjMuMC4wIiwgInN0cmlwLWFuc2kiOiAiXjYuMC4xIiB9IH0sICJzaGE1MTItd0t5UVJRcGpKMHNJcDYyRXJTWmRHc2pNSldzYXA1b1JOaWhIaHU2RzdKVk8vOWpJQjZVeWV2TCt0WHVPcXJuZzhqL2N4S1RXeVdVd3ZTVHJpaVp6L2c9PSJdLAoKICAgICJzdHJpcC1hbnNpIjogWyJzdHJpcC1hbnNpQDYuMC4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImFuc2ktcmVnZXgiOiAiXjUuMC4xIiB9IH0sICJzaGE1MTItWTM4VlBTSGNxa0ZyQ3BGblE5dnVTWG1xdXV2NW9YT0twR2VUNmFHcnIzbzNHYzlBbFZhNkpCZlVTT0NuYnhHR1pGKy8wb29JN0tyUHVVU3p0VWRVNUE9PSJdLAoKICAgICJzdHlsZWQtanN4IjogWyJzdHlsZWQtanN4QDUuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImNsaWVudC1vbmx5IjogIjAuMC4xIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgInJlYWN0IjogIj49IDE2LjguMCB8fCAxNy54LnggfHwgXjE4LjAuMC0wIHx8IF4xOS4wLjAtMCIgfSB9LCAic2hhNTEyLXFTVnlEVGVNb3RkdlFZb0hXTE5Hd1JGSkhDK2krWnZkQlJZb3NPRmdDK1dnMXZ4NGZyTjIvUkcvTkE3U1lxcXZLTkxmMzlQMkxTUkEycHU2bjBYWVpBPT0iXSwKCiAgICAic3VwcG9ydHMtY29sb3IiOiBbInN1cHBvcnRzLWNvbG9yQDguMS4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImhhcy1mbGFnIjogIl40LjAuMCIgfSB9LCAic2hhNTEyLU1wVUVOMk9vZHRVenh2S1FsNzJjVUY3UlE1RWlIc0d2U3NWRzBpYTljNVJiV0dMMkNJNEM3RXBQUzhVVEJJcGxubHpaaU51VjU2dytGdU54eTN0eTJRPT0iXSwKCiAgICAidGFpbHdpbmQtbWVyZ2UiOiBbInRhaWx3aW5kLW1lcmdlQDMuNi4wIiwgIiIsIHt9LCAic2hhNTEyLXV4TDdxQVZRcmlxUlFQQXlLM3BqNjZWcXNrV3FvWjM3UFc5NGp3T1R3TmZxL3o5b3l1MVYrZXFyWnF0UjIrZkNpWGRZT1plL01vZHQ4R3R2cU56dSt3PT0iXSwKCiAgICAidGFpbHdpbmRjc3MiOiBbInRhaWx3aW5kY3NzQDQuMy4wIiwgIiIsIHt9LCAic2hhNTEyLXk2bnhNR0Ixbk1XOVI2azk2ZTVnZElGemNmTC9nVEpSTmFxR2VzMVl2a0xuUFZYeldnYnFGRjJ5TEMwVDhHNzc0bjI0Y3gzUGU4WHJLb25pQ09BSCtRPT0iXSwKCiAgICAidGFwYWJsZSI6IFsidGFwYWJsZUAyLjMuMyIsICIiLCB7fSwgInNoYTUxMi11eGMvenBxRmc2eDdDOHZPRTdsaDZMYmRhOGVFTDl6bVZtL1BMZVRQQlJoaDF4Q2dkV2FRK0oxQ1VpZUdwSWZtMkhkdHNVcFJ2K0hzaGlhc0JNY2M2QT09Il0sCgogICAgInRlcnNlciI6IFsidGVyc2VyQDUuMTYuOSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAanJpZGdld2VsbC9zb3VyY2UtbWFwIjogIl4wLjMuMiIsICJhY29ybiI6ICJeOC41LjAiLCAiY29tbWFuZGVyIjogIl4yLjIwLjAiLCAic291cmNlLW1hcC1zdXBwb3J0IjogIn4wLjUuMjAiIH0sICJiaW4iOiB7ICJ0ZXJzZXIiOiAiYmluL3RlcnNlciIgfSB9LCAic2hhNTEyLUhQYS9GZFRCOVhHSTJIMS9rZUxGWkh4bDZXTnZBSTRZYWxIR3REUVRsTW5KY29xU2FiMVV3TDRsMWhHRWhzNi9HbUxIQlpJZy9ZZ0IrK2pjYnpvT0VnPT0iXSwKCiAgICAidGlueWJlbmNoIjogWyJ0aW55YmVuY2hAMi45LjAiLCAiIiwge30sICJzaGE1MTItMCtEVXZxV01WYWxMbWhhNmxyNGtEOGlBTUsxSHpWMC9hS25DdFdiOXY5NjQxVG5QL01GYjdQYzJieG94UWpUWEFFcnJ5WFZnVU9mdjJZcU5sbHFHZWc9PSJdLAoKICAgICJ0aW55ZXhlYyI6IFsidGlueWV4ZWNAMS4xLjIiLCAiIiwge30sICJzaGE1MTItZEFxU3FFL1JhYnBCS0k4K2gyNkdmTHE2VmIzSlZYczMwWFlRamRNamFqL2MydFM4SVlZTWJJelA1OTlLdFJqN2M1Ny93WUFwYjNRamdSZ1htckN1a0E9PSJdLAoKICAgICJ0aW55Z2xvYmJ5IjogWyJ0aW55Z2xvYmJ5QDAuMi4xNiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJmZGlyIjogIl42LjUuMCIsICJwaWNvbWF0Y2giOiAiXjQuMC40IiB9IH0sICJzaGE1MTItcG45OVZob0FDWVI4bkZIaHhxaXgrdXZzYlhpbmVBYXNXbTVvalhvTjh4RXdLNUtkMy9UcmhObjF3Qnl1RDUyVXhXUkx5OHB1K2tSTW5pRWk2RXE5Wmc9PSJdLAoKICAgICJ0aW55cmFpbmJvdyI6IFsidGlueXJhaW5ib3dAMy4xLjAiLCAiIiwge30sICJzaGE1MTItQmYrSUxtQmdyZXRVcmRKeHpYTTBTZ1hMWjNYZmlhVXVPai9JS1FIdVRYaXArMDVYbit1eUVZZFZnMGtZRGlwVEJjTHJDVnlVekFQejdRbUFyYjBtbXc9PSJdLAoKICAgICJ0cmVlLWtpbGwiOiBbInRyZWUta2lsbEAxLjIuMiIsICIiLCB7ICJiaW4iOiB7ICJ0cmVlLWtpbGwiOiAiY2xpLmpzIiB9IH0sICJzaGE1MTItTDBPcnBpOHFHcFJHLy9OZCtIOTB2RkIrM2lIbnVlMXpTU0dtTk9PQ2gxR0xKN3JVS1Z3VjJIdmlqcGhHUVMyVW1oVVpld1M5Vmd2eFlJZGdyK2ZHMUE9PSJdLAoKICAgICJ0c2xpYiI6IFsidHNsaWJAMi44LjEiLCAiIiwge30sICJzaGE1MTItb0pGdTk0SFFiK0tWZHVTVVFMN3ducG1xbmZtTHNPQS9uQWg2YjZFSDB3Q0VvSzAvbVBlWFU2YzN3S0RWODNNa091SFBSSHRTWEtLVTk5SUJhelMvMnc9PSJdLAoKICAgICJ0eXBlc2NyaXB0IjogWyJ0eXBlc2NyaXB0QDUuOS4zIiwgIiIsIHsgImJpbiI6IHsgInRzYyI6ICJiaW4vdHNjIiwgInRzc2VydmVyIjogImJpbi90c3NlcnZlciIgfSB9LCAic2hhNTEyLWpsMXZaelBEaW5McjllVXQzSi90N1Y2RmdORXc5UWp2QlBkeXN6OUtmUURENDFmUXJDMlk0dktRZGlhVXBGVDRiWGxiMVJIaExwcDh3dG02TTVUZ1N3PT0iXSwKCiAgICAidW5kaWNpLXR5cGVzIjogWyJ1bmRpY2ktdHlwZXNANi4yMS4wIiwgIiIsIHt9LCAic2hhNTEyLWl3RFpxZzBRQUdyZzlSYXY1SDRuME02NGMzbWtSNTljSjZ3UXArN0M0bkkwZ3NtRXhhZWRhWUxOTzQ0ZVQ0QXRCQndqYlRpR1BNbHQyTWQwVDlIOUpRPT0iXSwKCiAgICAidXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUiOiBbInVzZS1zeW5jLWV4dGVybmFsLXN0b3JlQDEuNi4wIiwgIiIsIHsgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJyZWFjdCI6ICJeMTYuOC4wIHx8IF4xNy4wLjAgfHwgXjE4LjAuMCB8fCBeMTkuMC4wIiB9IH0sICJzaGE1MTItUHA2R1N3R1AvTnJQSXJ4VkZBSWtPUWV5dzhsRmVuT0hpalFXa1VUckR2ckY0QUxxeWxQMkMvS0NrZVM5ZHBVTTNLdllSUWhuYTV2dDdJTDk1K1pROXc9PSJdLAoKICAgICJ2aXRlIjogWyJ2aXRlQDguMC4xNCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJsaWdodG5pbmdjc3MiOiAiXjEuMzIuMCIsICJwaWNvbWF0Y2giOiAiXjQuMC40IiwgInBvc3Rjc3MiOiAiXjguNS4xNSIsICJyb2xsZG93biI6ICIxLjAuMiIsICJ0aW55Z2xvYmJ5IjogIl4wLjIuMTYiIH0sICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgImZzZXZlbnRzIjogIn4yLjMuMyIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJAdHlwZXMvbm9kZSI6ICJeMjAuMTkuMCB8fCA+PTIyLjEyLjAiLCAiQHZpdGVqcy9kZXZ0b29scyI6ICJeMC4xLjE4IiwgImVzYnVpbGQiOiAiXjAuMjcuMCB8fCBeMC4yOC4wIiwgImppdGkiOiAiPj0xLjIxLjAiLCAibGVzcyI6ICJeNC4wLjAiLCAic2FzcyI6ICJeMS43MC4wIiwgInNhc3MtZW1iZWRkZWQiOiAiXjEuNzAuMCIsICJzdHlsdXMiOiAiPj0wLjU0LjgiLCAic3VnYXJzcyI6ICJeNS4wLjAiLCAidGVyc2VyIjogIl41LjE2LjAiLCAidHN4IjogIl40LjguMSIsICJ5YW1sIjogIl4yLjQuMiIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkB0eXBlcy9ub2RlIiwgIkB2aXRlanMvZGV2dG9vbHMiLCAiZXNidWlsZCIsICJqaXRpIiwgImxlc3MiLCAic2FzcyIsICJzYXNzLWVtYmVkZGVkIiwgInN0eWx1cyIsICJzdWdhcnNzIiwgInRlcnNlciIsICJ0c3giLCAieWFtbCJdLCAiYmluIjogeyAidml0ZSI6ICJiaW4vdml0ZS5qcyIgfSB9LCAic2hhNTEyLXM0QkpKKzV5MXBZTDZPdHc1MUZIaFZKUWhQbnVSaW5LaWc2NGcvMStFVU5hSnNkM2dDS2REMzFJUEZ2c3dVZ1c5LzYwUVQ5b0ZIYlpIYlFLNWltY3h3PT0iXSwKCiAgICAidml0ZXN0IjogWyJ2aXRlc3RANC4xLjciLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHZpdGVzdC9leHBlY3QiOiAiNC4xLjciLCAiQHZpdGVzdC9tb2NrZXIiOiAiNC4xLjciLCAiQHZpdGVzdC9wcmV0dHktZm9ybWF0IjogIjQuMS43IiwgIkB2aXRlc3QvcnVubmVyIjogIjQuMS43IiwgIkB2aXRlc3Qvc25hcHNob3QiOiAiNC4xLjciLCAiQHZpdGVzdC9zcHkiOiAiNC4xLjciLCAiQHZpdGVzdC91dGlscyI6ICI0LjEuNyIsICJlcy1tb2R1bGUtbGV4ZXIiOiAiXjIuMC4wIiwgImV4cGVjdC10eXBlIjogIl4xLjMuMCIsICJtYWdpYy1zdHJpbmciOiAiXjAuMzAuMjEiLCAib2J1ZyI6ICJeMi4xLjEiLCAicGF0aGUiOiAiXjIuMC4zIiwgInBpY29tYXRjaCI6ICJeNC4wLjMiLCAic3RkLWVudiI6ICJeNC4wLjAtcmMuMSIsICJ0aW55YmVuY2giOiAiXjIuOS4wIiwgInRpbnlleGVjIjogIl4xLjAuMiIsICJ0aW55Z2xvYmJ5IjogIl4wLjIuMTUiLCAidGlueXJhaW5ib3ciOiAiXjMuMS4wIiwgInZpdGUiOiAiXjYuMC4wIHx8IF43LjAuMCB8fCBeOC4wLjAiLCAid2h5LWlzLW5vZGUtcnVubmluZyI6ICJeMi4zLjAiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQGVkZ2UtcnVudGltZS92bSI6ICIqIiwgIkBvcGVudGVsZW1ldHJ5L2FwaSI6ICJeMS45LjAiLCAiQHR5cGVzL25vZGUiOiAiXjIwLjAuMCB8fCBeMjIuMC4wIHx8ID49MjQuMC4wIiwgIkB2aXRlc3QvYnJvd3Nlci1wbGF5d3JpZ2h0IjogIjQuMS43IiwgIkB2aXRlc3QvYnJvd3Nlci1wcmV2aWV3IjogIjQuMS43IiwgIkB2aXRlc3QvYnJvd3Nlci13ZWJkcml2ZXJpbyI6ICI0LjEuNyIsICJAdml0ZXN0L2NvdmVyYWdlLWlzdGFuYnVsIjogIjQuMS43IiwgIkB2aXRlc3QvY292ZXJhZ2UtdjgiOiAiNC4xLjciLCAiQHZpdGVzdC91aSI6ICI0LjEuNyIsICJoYXBweS1kb20iOiAiKiIsICJqc2RvbSI6ICIqIiB9LCAib3B0aW9uYWxQZWVycyI6IFsiQGVkZ2UtcnVudGltZS92bSIsICJAb3BlbnRlbGVtZXRyeS9hcGkiLCAiQHR5cGVzL25vZGUiLCAiQHZpdGVzdC9icm93c2VyLXBsYXl3cmlnaHQiLCAiQHZpdGVzdC9icm93c2VyLXByZXZpZXciLCAiQHZpdGVzdC9icm93c2VyLXdlYmRyaXZlcmlvIiwgIkB2aXRlc3QvY292ZXJhZ2UtaXN0YW5idWwiLCAiQHZpdGVzdC9jb3ZlcmFnZS12OCIsICJAdml0ZXN0L3VpIiwgImhhcHB5LWRvbSIsICJqc2RvbSJdLCAiYmluIjogeyAidml0ZXN0IjogInZpdGVzdC5tanMiIH0gfSwgInNoYTUxMi1mbFl5YUZkMkNnb0NvVSswVUt0M3B4a3NnQytTMDJpVEROMG4zTHRxYU1lWHNJOVNCY2ROdWpjMmswRGVGTHpVbi8wazUzOHlOak9TZHdnQ3FjcndKQT09Il0sCgogICAgIndoeS1pcy1ub2RlLXJ1bm5pbmciOiBbIndoeS1pcy1ub2RlLXJ1bm5pbmdAMi4zLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAic2lnaW5mbyI6ICJeMi4wLjAiLCAic3RhY2tiYWNrIjogIjAuMC4yIiB9LCAiYmluIjogeyAid2h5LWlzLW5vZGUtcnVubmluZyI6ICJjbGkuanMiIH0gfSwgInNoYTUxMi1oVXJtYVdCZFZEY3h2WXFueWgwOXp1bkt6Uk9XamJaVGlOeThkQkVqa1M3ZWhFRFFpYlhKN1h2bG10Ynd1VGNsVWlJeU4rQ3lYUUQ0Vm1rbzhmTm04dz09Il0sCgogICAgIndyYXAtYW5zaSI6IFsid3JhcC1hbnNpQDcuMC4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImFuc2ktc3R5bGVzIjogIl40LjAuMCIsICJzdHJpbmctd2lkdGgiOiAiXjQuMS4wIiwgInN0cmlwLWFuc2kiOiAiXjYuMC4wIiB9IH0sICJzaGE1MTItWVZHSWoya2FtTFNUeHc2TnNaam9CeGZTd3NuMHljZGVzbWM0cCtRMjFjNXpQdVoxcGwrTmZ4VmR4UHRkSHZtTlZPUTZYU1lHNEFVdHl0L0ZpN0QxNlE9PSJdLAoKICAgICJ5MThuIjogWyJ5MThuQDUuMC44IiwgIiIsIHt9LCAic2hhNTEyLTBwZkZ6ZWdlRFdKSEpJQW1UTFJQMkR3SGpkRjVzN2pvOXR1enRkUXhBaElOQ2R2UyszbkdJTnFQZDAwQXBocUpSLzBMaEFOVVM2Lys3U0NiOThZT2ZBPT0iXSwKCiAgICAieWFtbCI6IFsieWFtbEAyLjkuMCIsICIiLCB7ICJiaW4iOiB7ICJ5YW1sIjogImJpbi5tanMiIH0gfSwgInNoYTUxMi0yQXZoTlgzbWI4emQ2Wnk3SU5UdFNwbDFGMTVIVzZXbnFqMHNyV2xrS0xjcFlsL2dNSU1KaXl1R3EyS2VJMllGeFVQamRsQiszTGMxMHNlTUx0TDRjQT09Il0sCgogICAgInlhcmdzIjogWyJ5YXJnc0AxNy43LjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiY2xpdWkiOiAiXjguMC4xIiwgImVzY2FsYWRlIjogIl4zLjEuMSIsICJnZXQtY2FsbGVyLWZpbGUiOiAiXjIuMC41IiwgInJlcXVpcmUtZGlyZWN0b3J5IjogIl4yLjEuMSIsICJzdHJpbmctd2lkdGgiOiAiXjQuMi4zIiwgInkxOG4iOiAiXjUuMC41IiwgInlhcmdzLXBhcnNlciI6ICJeMjEuMS4xIiB9IH0sICJzaGE1MTItN2RTenpSUSsrQ0tuTkkva3JLbllSVjdKS0tQVVhNRWg2MXNvYUhLZzltcldFaHpGV2hGbnhQeEdsKzY5Y0QxT3U2M0MxM05VUENubUljcnZxQ3VNNnc9PSJdLAoKICAgICJ5YXJncy1wYXJzZXIiOiBbInlhcmdzLXBhcnNlckAyMS4xLjEiLCAiIiwge30sICJzaGE1MTItdFZwc0pXN0RkamVjQWlGcGJJQjFlM3F4SVFzRTZOb1BjNS9lVGRyYmJJQzRoMExWc1dobm9hM2crbTJIY2xCSXVqSHpzeFo0VkpWQStHVXVjMi9MQnc9PSJdLAoKICAgICJ6b2QiOiBbInpvZEA0LjQuMyIsICIiLCB7fSwgInNoYTUxMi15dEVORmpJSkZsMlV3WWdsZGUyamNoVzJId200R0pGTERpU1hXZFRySlFCSU45RmN5cDduNERoeEpFaVdOQUpNVjEvQnFXZlcva2tnNzFVRGNISnlUUT09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS13YXNtMzItd2FzaS9AZW1uYXBpL2NvcmUiOiBbIkBlbW5hcGkvY29yZUAxLjEwLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGVtbmFwaS93YXNpLXRocmVhZHMiOiAiMS4yLjEiLCAidHNsaWIiOiAiXjIuNC4wIiB9LCAiYnVuZGxlZCI6IHRydWUgfSwgInNoYTUxMi15cTZPa0o0cDgyQ0FmUGwwdTltUWViUUhLUEprWTdXckl1azIwNWNUWW5ZZStrMlo4WUJoMTFGcmJSRy9INmloaXJxY2FjT2dsMkJJTzhveU1RTGVYdz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS13YXNtMzItd2FzaS9AZW1uYXBpL3J1bnRpbWUiOiBbIkBlbW5hcGkvcnVudGltZUAxLjEwLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9LCAiYnVuZGxlZCI6IHRydWUgfSwgInNoYTUxMi1ld3ZZbGs4NnhVb0dJMHpRUk5xL21DKzE2UjFRZURsS1F5MjFLaTNvU1lYTmdMYjQ1R1YxUDZBME0rL3M2bnlDdU5EcWU1VnBhWTg0QnpYR3dWYndGQT09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS13YXNtMzItd2FzaS9AZW1uYXBpL3dhc2ktdGhyZWFkcyI6IFsiQGVtbmFwaS93YXNpLXRocmVhZHNAMS4yLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9LCAiYnVuZGxlZCI6IHRydWUgfSwgInNoYTUxMi11VElJN09ZRisvTWVzL01yY0lPWXA1eU90U01MQldTSW9MUHBjZ3dpcG9pS2JsaTZrMzIydGNvRnN4b0lJeFBEcVcwMVNRR0Fna280RXpaaTJCTnYydz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS13YXNtMzItd2FzaS9AbmFwaS1ycy93YXNtLXJ1bnRpbWUiOiBbIkBuYXBpLXJzL3dhc20tcnVudGltZUAxLjEuNCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAdHlieXMvd2FzbS11dGlsIjogIl4wLjEwLjEiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQGVtbmFwaS9jb3JlIjogIl4xLjcuMSIsICJAZW1uYXBpL3J1bnRpbWUiOiAiXjEuNy4xIiB9LCAiYnVuZGxlZCI6IHRydWUgfSwgInNoYTUxMi0zTlFOTmdBMVlTbEpiL2tNSDFpbGRBU1A5SFc3LzdrWW5SSTJzeldKYW9mYVMxaFdtYkdJNEgrZDMrMjJhR3pYWE45SUorbitHaUZWY0dpcEpQMThvdz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS13YXNtMzItd2FzaS9AdHlieXMvd2FzbS11dGlsIjogWyJAdHlieXMvd2FzbS11dGlsQDAuMTAuMiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi40LjAiIH0sICJidW5kbGVkIjogdHJ1ZSB9LCAic2hhNTEyLVJvQnZKMlgwd3VLbFdGSWpyd2ZmR3cxSXFaSEtRcXpJY2hLYWFkWlpmbk5wc0FZcDJtTTBoMzZKdFBDak5EQUhHZ1llei8xNXVNQnBmR3djaGhpTWdnPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLXdhc20zMi13YXNpL3RzbGliIjogWyJ0c2xpYkAyLjguMSIsICIiLCB7ICJidW5kbGVkIjogdHJ1ZSB9LCAic2hhNTEyLW9KRnU5NEhRYitLVmR1U1VRTDd3bnBtcW5mbUxzT0EvbkFoNmI2RUgwd0NFb0swL21QZVhVNmMzd0tEVjgzTWtPdUhQUkh0U1hLS1U5OUlCYXpTLzJ3PT0iXSwKCiAgICAiY2hhbGsvc3VwcG9ydHMtY29sb3IiOiBbInN1cHBvcnRzLWNvbG9yQDcuMi4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImhhcy1mbGFnIjogIl40LjAuMCIgfSB9LCAic2hhNTEyLXFwQ0F2Umw5c3R1T0h2ZUtzbjdIbmNKUnZ2NTAxcUlhY0t6UWxPLytMd3hjOSswcTJ3THl2NERmdnQ4MC9EUG4ycHFPQnNKZERpb2dYR1I5K092d1J3PT0iXSwKCiAgICAibmV4dC9wb3N0Y3NzIjogWyJwb3N0Y3NzQDguNC4zMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJuYW5vaWQiOiAiXjMuMy42IiwgInBpY29jb2xvcnMiOiAiXjEuMC4wIiwgInNvdXJjZS1tYXAtanMiOiAiXjEuMC4yIiB9IH0sICJzaGE1MTItUFMwOElib2lhOW10cy8yeWdWM2VMcFk1Z2huVWNmTFYvRVhUT1cxRTJxWXhKS0dHQlV0TmpONzZGWUhuTXMzNlJtQVJuNDFiQzBBWm1uK3JSME9WcFE9PSJdLAogIH0KfQo=" }, { "path": "metadata.json", "kind": "text", "content": '{\n "id": "bakery",\n "name": "Bakery",\n "tagline": "Warm, food-forward storefront with custom-order forms and same-day delivery checkout.",\n "industry": "food",\n "tags": ["food", "bakery", "pastry"],\n "stability": "stable",\n "schemaType": "Bakery",\n "mock": {\n "seedName": "default",\n "seedBusinessId": "bus_default_akua_bakery"\n }\n}\n' }, { "path": "next.config.ts", "kind": "text", "content": 'import type { NextConfig } from "next";\n\n// Same-origin proxy target for the storefront API. The public key\n// decides: a real `cpk_live_\u2026` / `cpk_test_\u2026` only resolves against\n// hosted Cimplify, so browser cart writes go to the same place the\n// server catalogue reads come from. Anything else (`mock-dev`, empty)\n// falls back to the local `cimplify dev` mock in dev.\nconst publicKey = process.env.NEXT_PUBLIC_CIMPLIFY_PUBLIC_KEY?.trim() ?? "";\nconst keyTargetsHostedCimplify =\n publicKey.startsWith("cpk_live_") || publicKey.startsWith("cpk_test_");\nconst STOREFRONT_URL =\n process.env.NODE_ENV === "production" || keyTargetsHostedCimplify\n ? "https://storefronts.cimplify.io"\n : "http://127.0.0.1:8787";\n\nif (STOREFRONT_URL === "http://127.0.0.1:8787") {\n console.warn(\n "[cimplify] next.config resolved the local storefront API URL; production deploys must run with NODE_ENV=production.",\n );\n}\n\n// Cache Components (\'use cache\' + cacheTag/cacheLife) require Node-specific\n// setTimeout atomicity and serialize a postponed state that routinely exceeds\n// CF Workers\' 128MB zlib limit. We\'re on Cloudflare Workers via opennext, so\n// we stay on Next 16\'s "Previous Model" \u2014 `fetch.next.{revalidate,tags}` via\n// the SDK\'s `cacheOptions`, plus `export const revalidate` per page. See\n// https://nextjs.org/docs/app/guides/caching-without-cache-components.\nconst nextConfig: NextConfig = {\n async redirects() {\n return [\n { source: "/login", destination: "/account", permanent: false },\n { source: "/signup", destination: "/account", permanent: false },\n ];\n },\n async rewrites() {\n return [\n { source: "/api/v1/:path*", destination: `${STOREFRONT_URL}/api/v1/:path*` },\n { source: "/img/:path*", destination: `${STOREFRONT_URL}/img/:path*` },\n { source: "/elements/:path*", destination: `${STOREFRONT_URL}/elements/:path*` },\n { source: "/_mock/:path*", destination: `${STOREFRONT_URL}/_mock/:path*` },\n ];\n },\n images: {\n loader: "custom",\n loaderFile: "./lib/cimplify-loader.ts",\n remotePatterns: [\n { protocol: "http", hostname: "127.0.0.1", port: "8787", pathname: "/img/**" },\n { protocol: "http", hostname: "localhost", port: "8787", pathname: "/img/**" },\n { protocol: "http", hostname: "localhost", port: "3000", pathname: "/img/**" },\n { protocol: "https", hostname: "loremflickr.com", pathname: "/**" },\n { protocol: "https", hostname: "images.unsplash.com", pathname: "/**" },\n { protocol: "https", hostname: "static-tmp.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "storefrontassetscdn.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "cdn.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "res.cloudinary.com", pathname: "/cimplify/**" },\n ],\n },\n};\n\nexport default nextConfig;\n' }, { "path": "CLAUDE.md", "kind": "text", "content": "# CLAUDE.md\n\nThis project was scaffolded from a Cimplify storefront template (`cimplify init`).\n\n## Read these first\n\n- **`AGENTS.md`** at the project root \u2014 the file \u2194 `brand.X` field map for *this template's* industry, plus the architectural rules.\n- **`.claude/skills/cimplify-storefront/SKILL.md`** \u2014 the playbook for common tasks (rebrand, add a section, wire a Server Action, deploy, eject a component). Invoke it whenever you're asked to change content, palette, copy, or routing.\n\n## The two-line summary\n\n1. **Edit `lib/brand.ts`** for any visible string.\n2. **Edit `app/globals.css` `@theme` block** for any palette / radius / font change.\n\nThat covers ~95% of what merchants ask for. For anything else, follow the `cimplify-storefront` skill.\n\n## Don't do\n\n- Hardcode strings in pages or components.\n- Enable `cacheComponents: true` in `next.config.ts` \u2014 we're on Cloudflare Workers, where `'use cache'` postponed state blows past CF's 128MB zlib limit. This template stays on Next 16's \"Previous Model\" (ISR): `export const revalidate` per page + `cacheOptions: { revalidate, tags }` on SDK reads.\n- Add `'use cache'`, `cacheTag`, or `cacheLife` anywhere. Use the SDK's `cacheOptions` instead.\n- Use `unstable_cache` \u2014 it's gone in Next 16. Use SDK `cacheOptions` or `fetch.next.{revalidate,tags}`.\n- Run `bun test` (Bun's `vi` shim is incomplete) \u2014 use `bun run test:run`.\n" }, { "path": "app/about/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `About \u2014 ${brand.name}`,\n description: brand.description,\n};\n\nexport default function AboutPage() {\n const a = brand.about;\n const titleParts = a.title.split("\\n");\n return (\n <article className="max-w-3xl mx-auto px-6 sm:px-8 py-16">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2">\n {a.eyebrow}\n </p>\n <h1 className="font-serif text-[clamp(2.25rem,5vw,3.5rem)] font-semibold mb-6 -tracking-[0.02em]">\n {titleParts.map((line, i) => (\n <span key={i}>\n {line}\n {i < titleParts.length - 1 && <br />}\n </span>\n ))}\n </h1>\n <div className="prose prose-lg max-w-none space-y-5 text-foreground/90 leading-relaxed">\n {a.paragraphs.map((p, i) => (\n <p key={i}>{p}</p>\n ))}\n {a.sections.map((s) => (\n <div key={s.heading}>\n <h2 className="font-serif text-3xl font-semibold mt-10 mb-3">{s.heading}</h2>\n <p>{s.body}</p>\n </div>\n ))}\n </div>\n </article>\n );\n}\n' }, { "path": "app/llms.txt/route.ts", "kind": "text", "content": 'import { getServerClient, tags, type Product } from "@cimplify/sdk/server";\nimport { brand } from "@/lib/brand";\nimport { getSiteUrl } from "@/lib/site-url";\n\nexport const revalidate = 3600;\n\nasync function buildLlmsTxt(SITE_URL: string): Promise<string> {\n const client = getServerClient();\n const [productsRes, categoriesRes, collectionsRes] = await Promise.all([\n client.catalogue.getProducts(\n { limit: 500 },\n { cacheOptions: { revalidate: 3600, tags: [tags.products()] } },\n ),\n client.catalogue.getCategories({\n cacheOptions: { revalidate: 3600, tags: [tags.categories()] },\n }),\n client.catalogue.getCollections({\n cacheOptions: { revalidate: 3600, tags: [tags.collections()] },\n }),\n ]);\n\n const products: Product[] = productsRes.ok ? productsRes.value.items : [];\n const categories = categoriesRes.ok ? categoriesRes.value : [];\n const collections = collectionsRes.ok ? collectionsRes.value : [];\n\n const lines: string[] = [];\n lines.push(`# ${brand.name}`);\n lines.push("");\n lines.push(`> ${brand.llms.summary}`);\n lines.push("");\n lines.push("## Browse");\n lines.push(`- [Home](${SITE_URL}/)`);\n lines.push(`- [Shop](${SITE_URL}/shop): Full menu with filter and sort.`);\n\n if (categories.length > 0) {\n lines.push("");\n lines.push("## Categories");\n for (const c of categories) {\n lines.push(\n `- [${c.name}](${SITE_URL}/categories/${c.slug})${c.description ? `: ${c.description}` : ""}`,\n );\n }\n }\n\n if (collections.length > 0) {\n lines.push("");\n lines.push("## Collections");\n for (const c of collections) {\n lines.push(\n `- [${c.name}](${SITE_URL}/collections/${c.slug})${c.description ? `: ${c.description}` : ""}`,\n );\n }\n }\n\n if (products.length > 0) {\n lines.push("");\n lines.push("## Products");\n for (const p of products) {\n const slug = p.slug ?? p.id;\n const price = `${brand.currency} ${p.default_price}`;\n const desc = p.description ? ` \u2014 ${p.description.replace(/\\s+/g, " ").slice(0, 200)}` : "";\n lines.push(`- [${p.name}](${SITE_URL}/shop?product=${slug}) (${price})${desc}`);\n }\n }\n\n lines.push("");\n lines.push("## Information");\n lines.push(`- [About](${SITE_URL}/about)`);\n lines.push(`- [FAQ](${SITE_URL}/faq)`);\n lines.push(`- [Terms of Service](${SITE_URL}/terms)`);\n lines.push(`- [Privacy Policy](${SITE_URL}/privacy)`);\n lines.push(`- [Sitemap (XML)](${SITE_URL}/sitemap.xml)`);\n lines.push("");\n lines.push("## Contact");\n lines.push(`- Email: ${brand.contact.email}`);\n lines.push(`- Phone: ${brand.contact.phone}`);\n lines.push(`- Address: ${brand.contact.address}`);\n\n return lines.join("\\n") + "\\n";\n}\n\n/**\n * `/llms.txt` \u2014 machine-readable site index for LLMs (per llmstxt.org).\n * Lets coding agents and chat assistants find products, categories, and\n * support pages without scraping HTML. Plain Markdown so it streams cheaply\n * into context windows.\n */\nexport async function GET(): Promise<Response> {\n const body = await buildLlmsTxt(await getSiteUrl());\n return new Response(body, {\n headers: {\n "Content-Type": "text/plain; charset=utf-8",\n "Cache-Control": "public, max-age=0, s-maxage=3600, stale-while-revalidate=86400",\n },\n });\n}\n' }, { "path": "app/contact/contact-form.tsx", "kind": "text", "content": `"use client";
|
|
2979
|
+
` }, { "path": "lib/site-url.ts", "kind": "text", "content": 'import { SITE_URL } from "./site.config";\n\n/** Canonical absolute URL for this storefront. */\nexport async function getSiteUrl(): Promise<string> {\n return SITE_URL;\n}\n' }, { "path": "lib/cimplify-loader.ts", "kind": "text", "content": 'import type { ImageLoader } from "next/image";\n\nimport { assetUrl, isCimplifyAsset } from "@cimplify/sdk";\n\nconst cdnBase = process.env.NEXT_PUBLIC_CIMPLIFY_CDN_URL?.trim() || undefined;\n\nconst cimplifyImageLoader: ImageLoader = ({ src, width, quality }) => {\n if (isCimplifyAsset(src, cdnBase)) {\n return assetUrl(src, {\n base: cdnBase,\n w: width,\n quality,\n format: "auto",\n });\n }\n return src;\n};\n\nexport default cimplifyImageLoader;\n' }, { "path": "lib/cart.ts", "kind": "text", "content": '"use client";\n\nimport { useCart } from "@cimplify/sdk/react";\n\n/**\n * Reactive cart count for the header pill. Subscribes to the SDK cart\n * state \u2014 updates immediately on add / remove / quantity change.\n */\nexport function useCartCount(): { count: number } {\n const { itemCount } = useCart();\n return { count: itemCount };\n}\n' }, { "path": ".gitignore", "kind": "text", "content": "node_modules\n.next\n.open-next\nout\n.env\n.env.local\n.env*.local\n.DS_Store\n*.tsbuildinfo\nnext-env.d.ts\n" }, { "path": "package.json", "kind": "text", "content": '{\n "name": "__STOREFRONT_NAME__",\n "private": true,\n "version": "0.0.0",\n "scripts": {\n "dev": "concurrently -k -n mock,next -c blue,magenta \\"cimplify-mock --seed default --quiet\\" \\"next dev\\"",\n "dev:storefront": "next dev",\n "dev:mock": "cimplify-mock --seed default",\n "build": "next build",\n "start": "next start",\n "typecheck": "tsc --noEmit",\n "test": "vitest",\n "test:run": "vitest run",\n "check:brand": "vitest run __tests__/brand.test.ts",\n "check:cart": "vitest run __tests__/cart-flow.test.ts",\n "check:contract": "vitest run __tests__/contract.test.ts",\n "check": "bun run typecheck && bun run test:run"\n },\n "dependencies": {\n "@cimplify/sdk": "^0.57.0",\n "next": "^16.2.6",\n "react": "^19.0.0",\n "react-dom": "^19.0.0"\n },\n "devDependencies": {\n "@tailwindcss/postcss": "^4.2.4",\n "@types/node": "^22.10.0",\n "@types/react": "^19.0.0",\n "@types/react-dom": "^19.0.0",\n "concurrently": "^9.0.0",\n "tailwindcss": "^4.2.4",\n "typescript": "^5.9.3",\n "vitest": "^4.1.5"\n }\n}\n' }, { "path": "bun.lock", "kind": "binary", "content": "ewogICJsb2NrZmlsZVZlcnNpb24iOiAxLAogICJjb25maWdWZXJzaW9uIjogMSwKICAid29ya3NwYWNlcyI6IHsKICAgICIiOiB7CiAgICAgICJuYW1lIjogIl9fU1RPUkVGUk9OVF9OQU1FX18iLAogICAgICAiZGVwZW5kZW5jaWVzIjogewogICAgICAgICJAY2ltcGxpZnkvc2RrIjogIl4wLjU0LjAiLAogICAgICAgICJuZXh0IjogIl4xNi4yLjYiLAogICAgICAgICJyZWFjdCI6ICJeMTkuMC4wIiwKICAgICAgICAicmVhY3QtZG9tIjogIl4xOS4wLjAiLAogICAgICB9LAogICAgICAiZGV2RGVwZW5kZW5jaWVzIjogewogICAgICAgICJAdGFpbHdpbmRjc3MvcG9zdGNzcyI6ICJeNC4yLjQiLAogICAgICAgICJAdHlwZXMvbm9kZSI6ICJeMjIuMTAuMCIsCiAgICAgICAgIkB0eXBlcy9yZWFjdCI6ICJeMTkuMC4wIiwKICAgICAgICAiQHR5cGVzL3JlYWN0LWRvbSI6ICJeMTkuMC4wIiwKICAgICAgICAiY29uY3VycmVudGx5IjogIl45LjAuMCIsCiAgICAgICAgInRhaWx3aW5kY3NzIjogIl40LjIuNCIsCiAgICAgICAgInR5cGVzY3JpcHQiOiAiXjUuOS4zIiwKICAgICAgICAidml0ZXN0IjogIl40LjEuNSIsCiAgICAgIH0sCiAgICB9LAogIH0sCiAgInBhY2thZ2VzIjogewogICAgIkBhbGxvYy9xdWljay1scnUiOiBbIkBhbGxvYy9xdWljay1scnVANS4yLjAiLCAiIiwge30sICJzaGE1MTItVXJjQUJCKzRiVXJGQUJ3Ymx1VElCRXJYd3Zic1UvVjdUWldmbWJnSmZia3dpQnV6aVM5Z3hkT0RVeXVpZWNmZEdRODVqZ2xNVzZqdVMzK3o1VHNLTHc9PSJdLAoKICAgICJAYmFiZWwvcnVudGltZSI6IFsiQGJhYmVsL3J1bnRpbWVANy4yOS4yIiwgIiIsIHt9LCAic2hhNTEyLUppRFNoSDQ1ektIV3lHZTRaTlZSckNqQno4Tmg5VE1tWkcxa2g0UVRLOGhDQlRXQmk4RGEraTdzMWZKdzcvbFlwTTRjY2VwU05mcXpaL1F2QUJCaTVnPT0iXSwKCiAgICAiQGJhc2UtdWkvcmVhY3QiOiBbIkBiYXNlLXVpL3JlYWN0QDEuNS4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBiYWJlbC9ydW50aW1lIjogIl43LjI5LjIiLCAiQGJhc2UtdWkvdXRpbHMiOiAiMC4yLjkiLCAiQGZsb2F0aW5nLXVpL3JlYWN0LWRvbSI6ICJeMi4xLjgiLCAiQGZsb2F0aW5nLXVpL3V0aWxzIjogIl4wLjIuMTEiLCAidXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUiOiAiXjEuNi4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBkYXRlLWZucy90eiI6ICJeMS4yLjAiLCAiQHR5cGVzL3JlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgImRhdGUtZm5zIjogIl40LjAuMCIsICJyZWFjdCI6ICJeMTcgfHwgXjE4IHx8IF4xOSIsICJyZWFjdC1kb20iOiAiXjE3IHx8IF4xOCB8fCBeMTkiIH0sICJvcHRpb25hbFBlZXJzIjogWyJAZGF0ZS1mbnMvdHoiLCAiQHR5cGVzL3JlYWN0IiwgImRhdGUtZm5zIl0gfSwgInNoYTUxMi16MWdTQWxjZWQxeVkraU0rbUhERXRJa0Q4VUkzRWJzNTJNdUJQeHZWNmY1aFJ1dGsreHZDSC93dUI3aERxRHpLOUpHNUZvTXo1bmhycXRTczF3anQxQT09Il0sCgogICAgIkBiYXNlLXVpL3V0aWxzIjogWyJAYmFzZS11aS91dGlsc0AwLjIuOSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYmFiZWwvcnVudGltZSI6ICJeNy4yOS4yIiwgIkBmbG9hdGluZy11aS91dGlscyI6ICJeMC4yLjExIiwgInJlc2VsZWN0IjogIl41LjEuMSIsICJ1c2Utc3luYy1leHRlcm5hbC1zdG9yZSI6ICJeMS42LjAiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL3JlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgInJlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgInJlYWN0LWRvbSI6ICJeMTcgfHwgXjE4IHx8IF4xOSIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkB0eXBlcy9yZWFjdCJdIH0sICJzaGE1MTIteC9QRERDWXpvcVBwanJkeWIzVmN5eWxUSTJJalVYRXRZREdpNWZvaDdLc25tTkpJSWFWd0EyR0xnREgxZHBzMUdnWGlKYkE2MGhNK0F5dVRmUXpJdnc9PSJdLAoKICAgICJAY2ltcGxpZnkvc2RrIjogWyJAY2ltcGxpZnkvc2RrQDAuNTQuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYmFzZS11aS9yZWFjdCI6ICJeMS40LjEiLCAiY2xzeCI6ICJeMi4xLjEiLCAiZGF0ZS1mbnMiOiAiXjQuMS4wIiwgImxpYnBob25lbnVtYmVyLWpzIjogIjEuMTIuNDEiLCAicmVhY3QtZGF5LXBpY2tlciI6ICJeOS4xNC4wIiwgInRhaWx3aW5kLW1lcmdlIjogIl4zLjUuMCIsICJ6b2QiOiAiXjQuNC4zIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBwYXlzdGFjay9pbmxpbmUtanMiOiAiXjIuMjIuOCIsICJtc3ciOiAiPj0yLjAuMCIsICJyZWFjdCI6ICI+PTE3LjAuMCIsICJ2aXRlc3QiOiAiPj0yLjAuMCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkBwYXlzdGFjay9pbmxpbmUtanMiLCAibXN3IiwgInJlYWN0IiwgInZpdGVzdCJdLCAiYmluIjogeyAiY2ltcGxpZnktbW9jayI6ICJkaXN0L21vY2svY2xpLm1qcyIgfSB9LCAic2hhNTEyLVlVTi9sT3FWaUhjaTF2OVVTV1d3QVd0eTI5cEVYQmRMVHVLYXJTbDhFcGFmV2g1amtkR1oxUStOZTkvYmZnVFptUjhpVFVsdEE4VTdnbFYyRm9SU2dnPT0iXSwKCiAgICAiQGRhdGUtZm5zL3R6IjogWyJAZGF0ZS1mbnMvdHpAMS41LjAiLCAiIiwge30sICJzaGE1MTItbHdZTi92RFBlTlJVTGNlcG9FL0xPMlBneCs3L1JWK1M5QVJmYmM5bHIyRHRHa09EN3BBaXJ1SHZiUjFSWDNReWY2amE0N0VXSkRNc05LNXZLMDhESmc9PSJdLAoKICAgICJAZW1uYXBpL2NvcmUiOiBbIkBlbW5hcGkvY29yZUAxLjEwLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGVtbmFwaS93YXNpLXRocmVhZHMiOiAiMS4yLjEiLCAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTIteXE2T2tKNHA4MkNBZlBsMHU5bVFlYlFIS1BKa1k3V3JJdWsyMDVjVFluWWUrazJaOFlCaDExRnJiUkcvSDZpaGlycWNhY09nbDJCSU84b3lNUUxlWHc9PSJdLAoKICAgICJAZW1uYXBpL3J1bnRpbWUiOiBbIkBlbW5hcGkvcnVudGltZUAxLjEwLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTItZXd2WWxrODZ4VW9HSTB6UVJOcS9tQysxNlIxUWVEbEtReTIxS2kzb1NZWE5nTGI0NUdWMVA2QTBNKy9zNm55Q3VORHFlNVZwYVk4NEJ6WEd3VmJ3RkE9PSJdLAoKICAgICJAZW1uYXBpL3dhc2ktdGhyZWFkcyI6IFsiQGVtbmFwaS93YXNpLXRocmVhZHNAMS4yLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTItdVRJSTdPWUYrL01lcy9NcmNJT1lwNXlPdFNNTEJXU0lvTFBwY2d3aXBvaUtibGk2azMyMnRjb0ZzeG9JSXhQRHFXMDFTUUdBZ2tvNEV6WmkyQk52Mnc9PSJdLAoKICAgICJAZXNidWlsZC9haXgtcHBjNjQiOiBbIkBlc2J1aWxkL2FpeC1wcGM2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYWl4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi0xVkNJQ1d5cGVRS2hWYkU5b1cvc0phQW1qTHhoVnFhY2RrdlBMRWp3bHR0amZ3RU5SU0NsUzhFakJ6MEt6UnlGU0NQRElrdVhXMzRKZS92azd6ZEI3UT09Il0sCgogICAgIkBlc2J1aWxkL2FuZHJvaWQtYXJtIjogWyJAZXNidWlsZC9hbmRyb2lkLWFybUAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtIiB9LCAic2hhNTEyLVFOZFFFcHM3RGZGd0UzaFhpVTRCWmVPVjY4SEh6WXdHZDBOdGhoZDN1Q2trRUtLNy9SNk1UZ00wUDdIN0ZBczVwVS9ESVdzdmlNbUVHeEVveElaK1pRPT0iXSwKCiAgICAiQGVzYnVpbGQvYW5kcm9pZC1hcm02NCI6IFsiQGVzYnVpbGQvYW5kcm9pZC1hcm02NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItYkJ5NjlwZ2ZoTUd0Q253cEMveDVRaGZ4QXovY0JnUTllbmJ0d2pmNlY5bG5QSS9oTXlUOWlXcFIxYXJtMGwza3R0VHI0TDBLU0xwS21McC9pbEtTOUE9PSJdLAoKICAgICJAZXNidWlsZC9hbmRyb2lkLXg2NCI6IFsiQGVzYnVpbGQvYW5kcm9pZC14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImFuZHJvaWQiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1UVmhkVnRRSUZ1VnBJSVIyODJidGNHQzJvR1FvU2ZaZm1CZFRpcDJhbkNhVlljcVdsWlhHY2RjS0lVa2xmWDJ3ajBKa2xOWWd6MzlPQnFoMmNxWHZjUT09Il0sCgogICAgIkBlc2J1aWxkL2Rhcndpbi1hcm02NCI6IFsiQGVzYnVpbGQvZGFyd2luLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVkxZ2lDZk00bmxIRFdFZlNja016ZVdOZFFTMzFCUUdzOS9yb3V3NlViOTF0a0s3OWFJTVRIM3E5eEh2ekg4ZDB3RHJ1NUNpMGtXQjhiM3VwL25sMTZnPT0iXSwKCiAgICAiQGVzYnVpbGQvZGFyd2luLXg2NCI6IFsiQGVzYnVpbGQvZGFyd2luLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiZGFyd2luIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItQ0pzcnk4WkdNNVZGVmV5VVlCM2NkS3BkL0g2OVBZZXo0ZUpoMVcvdDM4dnp1dGRqRWp0UDdoQjZlTEtCb09keGNBbEN0RVlIelEvUEovb1U5STR1MEE9PSJdLAoKICAgICJAZXNidWlsZC9mcmVlYnNkLWFybTY0IjogWyJAZXNidWlsZC9mcmVlYnNkLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi15WXErMzlObFRSelUyWG1vUFc0bDVJZnBsOWZxU2swbkFKWU0vVi9XVUdQRUZmZWsxZXBMSEpJa1RRTTZiQnMxc3dBcGpPNW5XZ3ZyODQzZzZUanh1UT09Il0sCgogICAgIkBlc2J1aWxkL2ZyZWVic2QteDY0IjogWyJAZXNidWlsZC9mcmVlYnNkLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiZnJlZWJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLTBGZ3ZPSjZVVU1mbHNIU1BMemRmRG5uQkJWb0NEdEJUVnluL01yV2xvVU52cS81U0ZtaDEzbDNkdmdSUGtEaWhSeGI3N1kxN01icWJDQWEyc3RyTVFRPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtYXJtIjogWyJAZXNidWlsZC9saW51eC1hcm1AMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTIta3JvNGMwUDg1R01mRllxVzRUV09wdm1GOHJGU2hiV0duckxxbHpwNFgxVE5XalJZM0pNWVVmREN0T3hQS09JWThCMFdDOEhONTFoR1A0STRoejRBYVE9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1hcm02NCI6IFsiQGVzYnVpbGQvbGludXgtYXJtNjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi0rODlVc1FUZlhkbWpJdlpTNm5Vbk9PTG9YbmtVVEI5aFI1UUFlTHJRZHpPU1dadk5TQVhBdGNSREhXdHFBVXRBbXY3Wk0xV1BPT2VTeER6enpNb2dpUT09Il0sCgogICAgIkBlc2J1aWxkL2xpbnV4LWlhMzIiOiBbIkBlc2J1aWxkL2xpbnV4LWlhMzJAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJpYTMyIiB9LCAic2hhNTEyLXlURWpvYXB5OFVQM3J2OGRCMGlwM0FmTXBSYnloU04zK2hZOG1vL2k0UVhGZUR4bWlZYkVLcDNaUmpCS2NPUDg2MlVhNGIxUERmd2x2YnV3WTdoSUdRPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtbG9vbmc2NCI6IFsiQGVzYnVpbGQvbGludXgtbG9vbmc2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItTmVxcVlrcmNHekZ3aTZDR1JHTk1PaldHR1NZT3Bxd0NqUzlmdmFVbFg1czN6d090bjFxd2cxczJpRTJzdkJlNFEvWU9HMXE2ODc1bGNBb1FLL0Y0VkE9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1taXBzNjRlbCI6IFsiQGVzYnVpbGQvbGludXgtbWlwczY0ZWxAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJub25lIiB9LCAic2hhNTEyLUljdlRsRjlkdExyZkwvTThXZ05JL3FKWUJFTlAzZWtnc0hiWVVJekV6cTVYSnp6VkVWL2ZYWTlXRlBmRUVYbXUzY2sycUpQOExHL3AzUThmN1pjMlhnPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtcHBjNjQiOiBbIkBlc2J1aWxkL2xpbnV4LXBwYzY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAicHBjNjQiIH0sICJzaGE1MTItSE95MGFMVEpUVnRvVGVHWmg0SFNYYU82TTk1cXU0azVsSmNINGd4djU2aWF5Y2Z6MVM4R08vNUpoNlg0WTFZaUkwaDdjUnlMaStIaXhNUis4OHN3YWc9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1yaXNjdjY0IjogWyJAZXNidWlsZC9saW51eC1yaXNjdjY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1pOEpVREF1ZnB6OWpPem80eUlTaENUY1h6UzA3dkVnV3p5WDNOSDJHN0xFRlZnckxFaGp3TDNhakZFNGZaSTNJNFpnaU03SkgzR1E3UmVPYlJPdlNVQT09Il0sCgogICAgIkBlc2J1aWxkL2xpbnV4LXMzOTB4IjogWyJAZXNidWlsZC9saW51eC1zMzkweEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogInMzOTB4IiB9LCAic2hhNTEyLWpGbnUrNlViTGx6SWpQUXBXQ05oNVF0cmNOZk1MamdJYXZud1BRQWZvR3g0cTE3b2NPVTlNc1EyUVZ2Rnh3UW9XcFpUOER2VExvb1R2bU9RWGtPNTFnPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgteDY0IjogWyJAZXNidWlsZC9saW51eC14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItNmUwY3ZYd3pPblZXSkhxK21za1A4RE5TcktCcjFiVUxCdm5GTHBjMUtZK2QraXJaU2daMDJUR3NlNUZzYWZLUzVqZzJlNHBidks2VFBYYUYvQTYrQ0E9PSJdLAoKICAgICJAZXNidWlsZC9uZXRic2QtYXJtNjQiOiBbIkBlc2J1aWxkL25ldGJzZC1hcm02NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibm9uZSIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItdlVua0JZeFpXNGhML2llOTFoU3FhU05qdWxPbllYRTFWU0x1c252SGcydTNqZXdKQnozWXpCOStvQ3c4REFCZVZxWkdnOTR0OXR5WkZvSG1hOGdXWlE9PSJdLAoKICAgICJAZXNidWlsZC9uZXRic2QteDY0IjogWyJAZXNidWlsZC9uZXRic2QteDY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJub25lIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItWEFnOHBJUW41Q3poT0I4b2RJY0FtNDJRc09mYTk4U0JlS1VkbzR4YThPdlg4TGJNWnFFdGdlV0U5UC9XeHQ3TWxHMlFxdmpHdGhzK25xNDhUclVpS3c9PSJdLAoKICAgICJAZXNidWlsZC9vcGVuYnNkLWFybTY0IjogWyJAZXNidWlsZC9vcGVuYnNkLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJvcGVuYnNkIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1DdDJXY0ZFQU5sRkR0cDFuVkFYU05CUER4eVUrajcrdElkLy9pSFhVMmYvbE41QW1PNHpMeWhEY3BSNUN6MXIwOG1WeHp0M0pweXQ0UG1YUTFPNis3QT09Il0sCgogICAgIkBlc2J1aWxkL29wZW5ic2QteDY0IjogWyJAZXNidWlsZC9vcGVuYnNkLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAib3BlbmJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLXhBR0doeU9ROU90bTFYdThOVDFpZkdMbkE2TTNzSnhaNml4eWxiK3ZJVVZ6dnZkNkdPQUxwd1FyWXJ0bFBvdU1xZC92U2JnZWh6NkhhVms0KzdBZmh3PT0iXSwKCiAgICAiQGVzYnVpbGQvc3Vub3MteDY0IjogWyJAZXNidWlsZC9zdW5vcy14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogInN1bm9zIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItTXcrdHp5NHBwNndaRUswK0x3cjc2cFdManJ0am1KeVVCMjN0SEtxRURQNzRSM3E5NWx1WS9iWHFYWmVZbDROWWx2d09xb1JLbEluUWlhbGdDS3k2N1E9PSJdLAoKICAgICJAZXNidWlsZC93aW4zMi1hcm02NCI6IFsiQGVzYnVpbGQvd2luMzItYXJtNjRAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1BVlVQNDI4VlFUU2RkZ3V6OWRPOW5nYitFNWFTY3lnN25PZUpEckYxSFBZdTU1NWdtemEzYkRHTVBobVZYTDhzdkRTb3FQQ3NDUGpiMjY1eUcva0xLUT09Il0sCgogICAgIkBlc2J1aWxkL3dpbjMyLWlhMzIiOiBbIkBlc2J1aWxkL3dpbjMyLWlhMzJAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJpYTMyIiB9LCAic2hhNTEyLWkxc1crMWkrb1d2UXpTZ2ZSY3h4RzJrNEk5bjNPOU5ScXk4VSt1dWdhVDJEeTdrTE85WTd3STcyaGFPYWh4Y2VNWDhoWkF6Z0dvdTFGaG5kUmxkeFJnPT0iXSwKCiAgICAiQGVzYnVpbGQvd2luMzIteDY0IjogWyJAZXNidWlsZC93aW4zMi14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItbk9UMnZaTnc2aEorejQzb1AxU1BlYS9HLzZBYk42WCtiR05oTnVxOE50Ukh5NHdzTWh3NzY1SUtMTm1uamVrN0d2aldCWVE4UTVWQm9ZVEZnOXkxVVE9PSJdLAoKICAgICJAZmxvYXRpbmctdWkvY29yZSI6IFsiQGZsb2F0aW5nLXVpL2NvcmVAMS43LjUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGZsb2F0aW5nLXVpL3V0aWxzIjogIl4wLjIuMTEiIH0gfSwgInNoYTUxMi0xSWg0V1RXeXcwK2xLeUZNY0JIR2JiNVU1RnR1SEp1dWpveXlyNXpUYVdTNUVZTWVUNkpiMkF1RGVmdHNDc0V1Y2hPK21NMmlqNStxOWNyaHlkekxoUT09Il0sCgogICAgIkBmbG9hdGluZy11aS9kb20iOiBbIkBmbG9hdGluZy11aS9kb21AMS43LjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGZsb2F0aW5nLXVpL2NvcmUiOiAiXjEuNy41IiwgIkBmbG9hdGluZy11aS91dGlscyI6ICJeMC4yLjExIiB9IH0sICJzaGE1MTItOWdaU0FJNVhNMzY4ODBQUE1tLy85ZGZpRW5nWW9DNkFtMml6RVMxRkY0MDZZRnNqdnlCTW1lSjJnNFNBanUzeFd3dHV5bk5SRkwyczloZ3hwTEk1U1E9PSJdLAoKICAgICJAZmxvYXRpbmctdWkvcmVhY3QtZG9tIjogWyJAZmxvYXRpbmctdWkvcmVhY3QtZG9tQDIuMS44IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBmbG9hdGluZy11aS9kb20iOiAiXjEuNy42IiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgInJlYWN0IjogIj49MTYuOC4wIiwgInJlYWN0LWRvbSI6ICI+PTE2LjguMCIgfSB9LCAic2hhNTEyLWNDNTJiSHdNL24vQ3hTODdGSDB5V2RuZ0VacmpkdExXL3FWcnVvNjhxZytwcks3WlE0WUdkdXQyR3lEVnBvR2VBWWUvaDg5OXJWZU9WbTZPaTQwazJBPT0iXSwKCiAgICAiQGZsb2F0aW5nLXVpL3V0aWxzIjogWyJAZmxvYXRpbmctdWkvdXRpbHNAMC4yLjExIiwgIiIsIHt9LCAic2hhNTEyLVJpQi95SWg3OHBjSXhsNmxMTUcwQ2dCWEFaMlkwZVZIcU1QWXVndSs5VTBBZVQ2WUJlaUpwZjdsYmRKTkl1Z0ZQNVNJandOUmdvNERoUjFReGkyNkdnPT0iXSwKCiAgICAiQGltZy9jb2xvdXIiOiBbIkBpbWcvY29sb3VyQDEuMS4wIiwgIiIsIHt9LCAic2hhNTEyLVRkNzZxN2o1N28vdExWZGdTNzQ2Y1lBUmZTeXhrOGlFZlJ4ZXdMOWg0T016WWhiVzRUQWNwcGwwbVQ0ZXlxWGRkaDZML2p3b003NW1vN2l4YS9wQ2VRPT0iXSwKCiAgICAiQGltZy9zaGFycC1kYXJ3aW4tYXJtNjQiOiBbIkBpbWcvc2hhcnAtZGFyd2luLWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiAiMS4yLjQiIH0sICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLWltdFEzV01KWGJNWTRmeGIvTmRwNkhCVE5WdFdDVUkwV2RvYnloZUdmNSthZDZ4WDhWSURPOHUyeEU0cWMvZnIwOENLRy83ZERzZUZ0bjZNNmcvcjN3PT0iXSwKCiAgICAiQGltZy9zaGFycC1kYXJ3aW4teDY0IjogWyJAaW1nL3NoYXJwLWRhcndpbi14NjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWRhcndpbi14NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1ZTkVGQUYvNEtRL1BlVzBOK3IrYVZWc29JWTAvcXh4aWtGMlNXZHArTlJrbU1CN3k5TEJaQVZxUTR5aEdDbS9IM0gyNzBPU3lrcW1RTUtMQmhCSkRFdz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjRAMS4yLjQiLCAiIiwgeyAib3MiOiAiZGFyd2luIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi16cWpqbzdSYXRGZkZvUDBNa1E1MWpmdUZaQm5WRTJwUmlheWRLSjFHL3JIWnZuc3JIQU9jUUFMSWk5c0E1Y281eGVuUWRUdWdDdnRiMWN1Zjc4VmY0Zz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4teDY0IjogWyJAaW1nL3NoYXJwLWxpYnZpcHMtZGFyd2luLXg2NEAxLjIuNCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi0xSU9kNXhmVmhsR3dYK3pYdjJOOTNrMHlNT052VWxBTnlsYkp3MWVUYWg4Sy9KdHBpMTVLQytXU2lhWC9uQm1ibTJIeFJNMWdaMG5TZGpTc3JaYkdLZz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm0iOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm1AMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybSIgfSwgInNoYTUxMi1iRkk3eGNLRkVMZGlOQ1ZvdjhlNDRJYTR1MmJ5QStsM1h0c0FqK1E4dGZDd082QlE4aURvallkdm9QTXFzS0RrdW9PbytYNkhaQTBzMHExMUFOTVE4QT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm02NCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybTY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1leGNqWDhEZnNJY0oxMHgxS3pyNFJjV2UxZWRDOVBxdURSUlB4M1lWQ3ZRditVNXA3WWluMnMzMmZ0emlrWG9qYjFQSUZjLzlNdDI4L3kraVJrbGtydz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1wcGM2NCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi1GTXV2R2lqTERZRzZsVytiL1V2eWlsVVd1NUF5dSszcjJkMVM4bm90aUdDSXlZVS83NmVpZzFVZk1ta1o3dndnT3J6S3psUWJGU3VRZmdtN0dZVVBwQT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1yaXNjdjY0IjogWyJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgtcmlzY3Y2NEAxLjIuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1vVkRiY1I0elVDMGNlODJ0ZXViU20reDZFVGl4dEtaQmgvcWJSRUlPY0kzY1VMekR5YjE4U3IvV2N5eDdOUlFlUXpPaUhUTmJaRkYxVXdQUzJzY3lHQT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1zMzkweCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXMzOTB4QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJzMzkweCIgfSwgInNoYTUxMi1xbXA5VnJ6Z1BnTW9HWnlQdnJRSHFrMDJ1eWpBMC9RclRPMjZUcWs2bDRaVjBNUFdJVzZMVGtxT0lvditKMXlFdTdNYkZRYURwd2R3SktoYkp2dVJ4UT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjRAMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi10SnhpaUxzbUhjOUF4MWJ6M29hT1lCVVJUWEdJUkRPREJxaHZlVkhvbnJISjkvK2s4OXFiTGwwYmNKbnMrZTR0NHJ2YU5CeGFFWnNGdFNmQWRxdVBydz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjRAMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLUZWUUh1d3gxSUl1Tm93OVFBYllVekorRW44S2NWbTlMazUrdUdVUUpIYVptTUVDWm1PbGl4OUhuSDduMVRSa1hNUzBwR3hJSm9rSVZCOVN1cVpHR1h3PT0iXSwKCiAgICAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4bXVzbC14NjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wteDY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItK0xweUJrN0w0NFpJWHd6L1ZZZmdsYVgvb2t4ZXpFU2M2VXhEU295bzJLczZKeGM0WTdzR2pwZ1U5czRQTWdxZ2pqMWdaQ3lsVGllTmFtcUExTUY3RGc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4LWFybSI6IFsiQGltZy9zaGFycC1saW51eC1hcm1AMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybSI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItOWRMcXN2d3RnMXV1WEJHWktzeGVtOTU5NSt1anYwc0o2Vmk4d2NUQU5TRnB3Vi9HT05hdDVlQ2t6UW8vMU82elJJa2gwbS84KzVCanJScjdqRFVTWnc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4LWFybTY0IjogWyJAaW1nL3NoYXJwLWxpbnV4LWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm02NCI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1iS1F6YUpSWS9ia1BPWHlLeDVFVnVwN3FrYW9qRUNHNk5MWXN3Z2t0T1pqYVhlY1NBZUNXaVp3d2lGZjMvWStPMUhyYXVpRTNGVnNHeEZnOGMyNHJaZz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGludXgtcHBjNjQiOiBbIkBpbWcvc2hhcnAtbGludXgtcHBjNjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0IjogIjEuMi40IiB9LCAib3MiOiAibGludXgiLCAiY3B1IjogInBwYzY0IiB9LCAic2hhNTEyLTd6em53TmFxVzZZdHNmckdHREE2QlJrSVNLQUFFMUpvMFFkcE5ZWE5NSHUyKzBkVHJQZmxUTE5rcGM4bDdNVVA1TTE2WkpjVXZ5c1ZXV3JNZWZacXVBPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eC1yaXNjdjY0IjogWyJAaW1nL3NoYXJwLWxpbnV4LXJpc2N2NjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXJpc2N2NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi01MWdKdUxQVEthN3BpWVBhVnM4R21CeW83L1U3LzdUWk9xK2NuWEpJSFpLYXZJUkhBUDc3ZTNOMkhFbDNkZ2lxZEQvdzB5VWZpSm5JSTc3UHVEREZkdz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGludXgtczM5MHgiOiBbIkBpbWcvc2hhcnAtbGludXgtczM5MHhAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXMzOTB4IjogIjEuMi40IiB9LCAib3MiOiAibGludXgiLCAiY3B1IjogInMzOTB4IiB9LCAic2hhNTEyLW5RdENrMFBkS2ZobzNlQzVNcmJRb2lnSjJnZDFDZ2RkVU1rYWJVaityQmV2czh0WjJjVUxPeDQ2RTdveVgrMDRXR2ZBQmdJd21NQzBWcWllVGlSNGpnPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eC14NjQiOiBbIkBpbWcvc2hhcnAtbGludXgteDY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLU1FemQ4SFBLeFZ4VmVud0FhK0pSUHdFQzdRRmpvUFd1UzVOWm5CdDZCM3B1N0VHMkdlMGlkMW9MSFpwUEpkbjNPUUsrQlFEaXc5elN0aUhCVEpRUVFRPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eG11c2wtYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGludXhtdXNsLWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItZnBySlI2R3RSc010Nkt5ZnE0NElzQ2hWWmVHTjk3Z1REMzMxd2VSMWV4MWMxcnlwREVBQk42VG0yeGExd0U2bFliNURkRW5rMDNOWlBxQTdJZDIxeWc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4bXVzbC14NjQiOiBbIkBpbWcvc2hhcnAtbGludXhtdXNsLXg2NEAwLjM0LjUiLCAiIiwgeyAib3B0aW9uYWxEZXBlbmRlbmNpZXMiOiB7ICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXhtdXNsLXg2NCI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSmc4d05UMU1Vekl2aEJGeFZpcXJFaFdER3pxeW1vM3NWN3o3WnNhV2JaTkRMWFJKWm9SR3JqdWxwNjBZWXRWNHdmWThWSUtjV2lkam9qbExjV3JkOFE9PSJdLAoKICAgICJAaW1nL3NoYXJwLXdhc20zMiI6IFsiQGltZy9zaGFycC13YXNtMzJAMC4zNC41IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvcnVudGltZSI6ICJeMS43LjAiIH0sICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1PZFdURWlWa1kyUEh3cWtiQkk4ZnJGeFFRRmVrSGFTU2tVSUprd3pjbFdaZTY0TzFYNFVsVWpxcXFMYVBiVXBNT1FrNkZCdS9IdGxHWE5ibElzMGh1dz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzItYXJtNjQiOiBbIkBpbWcvc2hhcnAtd2luMzItYXJtNjRAMC4zNC41IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1XUTNBZ1dDV1lTYjJ5dCtJRzhtbkM2SmRrOVdoczdPMGd4cGhibHNMdmRoU3BTVHRtdTY5WkcxR2tiNk51dnhzTkFDd2lQVjZjTlNaTnp0MEtQc3c3Zz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzItaWEzMiI6IFsiQGltZy9zaGFycC13aW4zMi1pYTMyQDAuMzQuNSIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAiaWEzMiIgfSwgInNoYTUxMi1GVjltLzdObWVDbVNIREQ1ajQrNHBOSThDcDNhVytKdkxvWGNUVW8wSXF5alNmQVpKOGRJVW1pangxcWFKc0lpVStIb3N3NnhNNUtpakFXUkpDU2dOZz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzIteDY0IjogWyJAaW1nL3NoYXJwLXdpbjMyLXg2NEAwLjM0LjUiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi0rMjlZTXNxWTIvOWVGRWlXOTNlcVdudUxjV2N1Zm93WGV3d1NOSVQ2VXdaZFVVQ3JNM29Gak1XSC9aNi9UTW1iNGhsRmVubWZBVmJwV2V1cDJqcnlDdz09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogWyJAanJpZGdld2VsbC9nZW4tbWFwcGluZ0AwLjMuMTMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjIjogIl4xLjUuMCIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjQiIH0gfSwgInNoYTUxMi0ya2t0LzduaUo2TWdFUHhGMGJZZFE2ZXRaYUErZlF2RGNMS2NraHkxeUlRT3phb0tqQkJqU2o2My9hTFZqWUUzcWhSdDVkdk0rdVV5ZkNnNlVLQ0JiQT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3JlbWFwcGluZyI6IFsiQGpyaWRnZXdlbGwvcmVtYXBwaW5nQDIuMy41IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogIl4wLjMuNSIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjQiIH0gfSwgInNoYTUxMi1MSTl1LytsYVlHNERzMVRES1NKVzJZUHJJbGNWWU93aTJmVUM2eEI0M2x1ZUNqZ3hWNGxmZk9DWkN0WUZpSDZUTk9YK3RRS1h4OTdUNElLSGJoeUhFUT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3Jlc29sdmUtdXJpIjogWyJAanJpZGdld2VsbC9yZXNvbHZlLXVyaUAzLjEuMiIsICIiLCB7fSwgInNoYTUxMi1iUklTZ0NJalAyMC90YldTUFdNRWk1NFFWUFJaRXhrdUQ5bEpMK1VJeFVLdHdWSkE4d1cxVHJiMWpNczFSRlhvMUNCVE5aLzVocEM5UXZtS1dkb3BLdz09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3NvdXJjZS1tYXAiOiBbIkBqcmlkZ2V3ZWxsL3NvdXJjZS1tYXBAMC4zLjExIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogIl4wLjMuNSIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjUiIH0gfSwgInNoYTUxMi1aTXAxVjhaRmNQRzVkSVduUUxyM05TSTFNaUNVN1VFVGRTL0EwRzhWL1hXSHZKdjNac0ZxdXRKbjFZNVJQbUFQWDZGM0JpRTM5N09xdmVVLzlOQ3VJQT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3NvdXJjZW1hcC1jb2RlYyI6IFsiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjQDEuNS41IiwgIiIsIHt9LCAic2hhNTEyLWNZUTkzMTBncnF4dWVXYmwrV3VJVUlhaVVhRGNqN1dPcTVmVmhFbGpOVmdSZk9VaFk5ZnkyelR2Zm9xV3NuZWJoOFNsNzBWU2NGYklDdkpuTEtCME9nPT0iXSwKCiAgICAiQGpyaWRnZXdlbGwvdHJhY2UtbWFwcGluZyI6IFsiQGpyaWRnZXdlbGwvdHJhY2UtbWFwcGluZ0AwLjMuMzEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvcmVzb2x2ZS11cmkiOiAiXjMuMS4wIiwgIkBqcmlkZ2V3ZWxsL3NvdXJjZW1hcC1jb2RlYyI6ICJeMS40LjE0IiB9IH0sICJzaGE1MTItenpOUitTZFFTREp6Yzhqb2FlUDhRUW9DUXI4TnVZeDJkSUl5dGwxUWVCRVpISjl1VzZoZWJzcllnYno4aEp3VVFhbzNUV0NNdG1mVjhOdTF0d09MQXc9PSJdLAoKICAgICJAbmFwaS1ycy93YXNtLXJ1bnRpbWUiOiBbIkBuYXBpLXJzL3dhc20tcnVudGltZUAxLjEuNCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAdHlieXMvd2FzbS11dGlsIjogIl4wLjEwLjEiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQGVtbmFwaS9jb3JlIjogIl4xLjcuMSIsICJAZW1uYXBpL3J1bnRpbWUiOiAiXjEuNy4xIiB9IH0sICJzaGE1MTItM05RTk5nQTFZU2xKYi9rTUgxaWxkQVNQOUhXNy83a1luUkkyc3pXSmFvZmFTMWhXbWJHSTRIK2QzKzIyYUd6WFhOOUlKK24rR2lGVmNHaXBKUDE4b3c9PSJdLAoKICAgICJAbmV4dC9lbnYiOiBbIkBuZXh0L2VudkAxNi4yLjYiLCAiIiwge30sICJzaGE1MTItZ2Q4SG9ITjR1Zmo3M1dtUjNKbVZvbHJwSlI0N0lMSzZMb3VQNXhFbFBnbGFWeGlyNmUxYTdWenZUdkRXa09vUFhUOXJra1R6eUN4QnU0eWVaZlp3Y3c9PSJdLAoKICAgICJAbmV4dC9zd2MtZGFyd2luLWFybTY0IjogWyJAbmV4dC9zd2MtZGFyd2luLWFybTY0QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVpKR2trY05mWWdyck1rcU9kWjd6b0xhMVRPeTBxcGNNZmsvejRNaC9GS1V6NDBnVk8rSE5RV3FtTHhmNjdaNVdCNjREUnAwZGhFYnlIZmVsKzZzSlVnPT0iXSwKCiAgICAiQG5leHQvc3djLWRhcndpbi14NjQiOiBbIkBuZXh0L3N3Yy1kYXJ3aW4teDY0QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi12L1lMQkhJWTEzMkNlZDNwdUJKN1lKS3cxbHFzQ3JnY05vMmFSSmxDRXlRcnJDZVJKbHZHbG5teGhQeE5RSTNLRTNOMURONXI5VFBOUHZrYTNucTVSUT09Il0sCgogICAgIkBuZXh0L3N3Yy1saW51eC1hcm02NC1nbnUiOiBbIkBuZXh0L3N3Yy1saW51eC1hcm02NC1nbnVAMTYuMi42IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1SUE92cWxZQmJjUWprejlWUVFEWjJUMmJBUklqWFpWMUtGbHQrVjJNcjZTVy9lNEk5ZmNLc2FBMGhkeWYyRkhvVGxzVjJ4bkJkNVk5MTJyUC8xQ2U2dz09Il0sCgogICAgIkBuZXh0L3N3Yy1saW51eC1hcm02NC1tdXNsIjogWyJAbmV4dC9zd2MtbGludXgtYXJtNjQtbXVzbEAxNi4yLjYiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVVSVVR1MStkTWt4SnNQRmdtK09lRXZxOXdmNXN1ancwRXZnWXk4MFRER0hUU0xUbklIZXFiMEV1OEEzc0M5NUlSZ2plalFMK2tDNG13KzR5UHhpQVhBPT0iXSwKCiAgICAiQG5leHQvc3djLWxpbnV4LXg2NC1nbnUiOiBbIkBuZXh0L3N3Yy1saW51eC14NjQtZ251QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLURPajE4Mm1QVjhHM1VrcmF5TG9SRU01WUVZSStEazV3djdPeDl4bDFmRmliQUVMRXNGRDBsRFBmSEllSUxsdXRNTWZkeWhsellQRUxHM3BldUthdXJ3PT0iXSwKCiAgICAiQG5leHQvc3djLWxpbnV4LXg2NC1tdXNsIjogWyJAbmV4dC9zd2MtbGludXgteDY0LW11c2xAMTYuMi42IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSEtRNVNQL1YvdWI3M1V2RjduL3plSmx4azJrTG10TDdXenJnNFdmbWtqbU5vczVvbkoydEt1N3laT1BkTDE4QTZTdmZuM21heDI5eW0rcnk3TmtLNGc9PSJdLAoKICAgICJAbmV4dC9zd2Mtd2luMzItYXJtNjQtbXN2YyI6IFsiQG5leHQvc3djLXdpbjMyLWFybTY0LW1zdmNAMTYuMi42IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1MWlhwVGxQeVM1djdIaFNtbnZzTEdQM2lJWWdZT0JuYzhyOEFybFQ1NXNHSFY4OWJSMkhsRGRCaldRK1BZNlNKTW1rOFR1VkdGdXhhbG5QM2svMER3Zz09Il0sCgogICAgIkBuZXh0L3N3Yy13aW4zMi14NjQtbXN2YyI6IFsiQG5leHQvc3djLXdpbjMyLXg2NC1tc3ZjQDE2LjIuNiIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLUYwKzRpMGg5SjZDNGVFM0VBUFdzb0NrN1VXL2Riek9qeXp4WTBxbkRVT1lGdTZGRm1kWjZsOTcvWGRWMy9OejNWWXlPN1VXanlFSlVYa0dxY29YZk1BPT0iXSwKCiAgICAiQG94Yy1wcm9qZWN0L3R5cGVzIjogWyJAb3hjLXByb2plY3QvdHlwZXNAMC4xMzIuMCIsICIiLCB7fSwgInNoYTUxMi1GRVNNT3hpbDVTZTAxNHVpL0VxOGZUNXVISm82bklSd0gwUGZKclpKWHM2R2VrM1pWRk9ycFV2M1lJWlQyMG0rZXh0VTk4SGcxWW03MlU1OHJsc3hVUT09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWFuZHJvaWQtYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLWFuZHJvaWQtYXJtNjRAMS4wLjIiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItWlM0RDFKUEduL01ZUU4vU1lEV2Z0SUUvblZzTThqL0FGT1lFekFvT0UyTzNOa3RRT1pydSsvdllYR2JSL3F0ZExkSWZHQ1AwbGNvSmlZVnpzRXoraVE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1kYXJ3aW4tYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLWRhcndpbi1hcm02NEAxLjAuMiIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLXZkRkE5K0MvcmVreUdjZTdXcUhzL3hvVDBpb1pFV2FPRnlaTElWMW1FZU5GYUZEVVFyUElvOFZzMkd2SjZlZXRiM3J6RFV0VUJnenRvM0V4cFhKQjN3PT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NCI6IFsiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NEAxLjAuMiIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1CZXdTT3dUSGF6djc3RFRZaUFaWFNxcUtaNEtQL0tvbkZpc0RNVlU3UElteG9XZkIyYWVwblBoZDJFNFNXejN6RHpZZ0ROYnM2akJtVGRnTm5GMDJHQT09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWZyZWVic2QteDY0IjogWyJAcm9sbGRvd24vYmluZGluZy1mcmVlYnNkLXg2NEAxLjAuMiIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItbTQxbzdNMFlXdFVkcWs2MVRiK2puS2Iyck4rK2lSZElBU2xFeGtVb0tmSUFIMzBET0hDQjhmVkx6U1VwYldISFU4ZXNtRWlvWTYyUHh6ZXhFOE1CdUE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmQDEuMC4yIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItamNvakI5SDdXL2pTMjlwTUtXQUsxTitmVTk5dlhvZEhEVGF0UzNiM3kvWFNPQ2lIbzBra0E3NHBMM2pKbWtvUXRZcE9DeER2YUtzMWZvMklqLzFYNXc9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1nbnUiOiBbIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LWFybTY0LWdudUAxLjAuMiIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItMWpuNnFEVTVpaU9nRmd5Z0R6S1V1S1AwbWFUaTAvZjErc0JMZ3Zpai83NkM3N05tM3RzNnVmejlCamc1cTVkZHV4aVVJeHRxODZKSW9Cdm8xeFE0SWc9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsQDEuMC4yIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1RVkxPL2N6Rk1kb01GU3FsWDNiY3N3Y0pObS8yM3IrcW9hL2pndG1GYy9xRXA2L2pYbUlrRGpGL1hJbzhkUGZHYWl3eTF4ZlFuOG83N0w3OUdlWEZndz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXBwYzY0LWdudSI6IFsiQHJvbGxkb3duL2JpbmRpbmctbGludXgtcHBjNjQtZ251QDEuMC4yIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi1oZ081QWJtMHc1VUw2RkVhMmlGblpxbzJLbEs3VFE1UWhWNXgwOWh1akJmN3Q1S3pIUTFWbWZQdVRwcVJ5L3JObFN4dWEzZVdIMzc0eHhpVnJQK2xjQT09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXMzOTB4LWdudSI6IFsiQHJvbGxkb3duL2JpbmRpbmctbGludXgtczM5MHgtZ251QDEuMC4yIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJzMzkweCIgfSwgInNoYTUxMi1meThyWHh1WUV1NjAyYWJDOE1VTmFQallMSUZ6UmVPYUVJRU1LTVVhMHJGRVV4TnBWWGhzMTVLU1NRNHFscVNhTTdCNnJjajlyRFpnQURoL0lHRHpMUT09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1nbnUiOiBbIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1nbnVAMS4wLjIiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi0wK2JPa2lRNzc5K3IxV3BvSE9XSHFuY3Z5eVNjaTB2S3BoK215TkRZYitpbTZtZUpBekhRWGF5Nm9FZ25rSHVVR291TTFMS1Rad3FLcEJvdzZLajdDUT09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1tdXNsIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC14NjQtbXVzbEAxLjAuMiIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLW1qU2tyelpLNVFzbDBhOWQxSmdJTE9pdVpPU0RUVmRLRU5jU1hCb3FielNyc3BMUi80L0lSVkRvNXdkMkdnWmpOc3MvdmlCRkpkZXErajdxSDJueXB3PT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctb3Blbmhhcm1vbnktYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLW9wZW5oYXJtb255LWFybTY0QDEuMC4yIiwgIiIsIHsgIm9zIjogIm5vbmUiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLTF2NXZIYXNkZlFBWm9FSGFrQlY3MkxJRkFDOUpqbnltc2lLeHArR0VyL21hMytOSkNQU2FZSytxYXZJbk9vdkprZ3dGcnM3R2NjWDJkNklnREEzWjV3PT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctd2FzbTMyLXdhc2kiOiBbIkByb2xsZG93bi9iaW5kaW5nLXdhc20zMi13YXNpQDEuMC4yIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvY29yZSI6ICIxLjEwLjAiLCAiQGVtbmFwaS9ydW50aW1lIjogIjEuMTAuMCIsICJAbmFwaS1ycy93YXNtLXJ1bnRpbWUiOiAiXjEuMS40IiB9LCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItbWIxVm9iV242TmhlemlUazUvV0VhUjZBS1ZicndUNXNPaTZDN3prM2d5L3BEMXF0SmZVMWo0UGdUbzJOSm5PdGJMOURsM0FlZWk4dzlqSjdxQzJqWlE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjIjogWyJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjQDEuMC4yIiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1TcUtvbkY1NnZBL0wyeUh3SFljRXAyUDM0VVJwT1o3ZDFmUzYzNWNUa3BEblV0RUdkVWJoSTZOenNQZHFlU1d2QUFlR0RyeGpXak5taWJESWRGZjkvQT09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLXdpbjMyLXg2NC1tc3ZjIjogWyJAcm9sbGRvd24vYmluZGluZy13aW4zMi14NjQtbXN2Y0AxLjAuMiIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLXY3cVJJN2dYTFJJTmNPR1h0KzdZbUFaNmlGdXlaVk1Jb1hBeGhkOG9QK0RSOWRMZkw5R2ZOSXg3UExNeG1oWmR2cTh3YVVKQlFpV045RUtOeStUUkJRPT0iXSwKCiAgICAiQHJvbGxkb3duL3BsdWdpbnV0aWxzIjogWyJAcm9sbGRvd24vcGx1Z2ludXRpbHNAMS4wLjEiLCAiIiwge30sICJzaGE1MTItMmo5Ykd0NUpoOGhqK3ZQdGd6UHRsNzJqMHlSeEhBeXVtb282VE5mQWpzTEIwNFV0cFN2UGJQY0RjQk14ejduKzlDWUIwYzFHeFFGeFlSZzJqaW1xR3c9PSJdLAoKICAgICJAc3RhbmRhcmQtc2NoZW1hL3NwZWMiOiBbIkBzdGFuZGFyZC1zY2hlbWEvc3BlY0AxLjEuMCIsICIiLCB7fSwgInNoYTUxMi1sMmFGeTVqQUxobmlHNUhncXJENmpYTGkvclVXckt2cU4vcUp4NnlvSnNnS2hibFZkK2lxcVU0UkNYYXZtL2pQaXR5RG81VEN2S01ucGpLbk9yaXkwdz09Il0sCgogICAgIkBzd2MvaGVscGVycyI6IFsiQHN3Yy9oZWxwZXJzQDAuNS4xNSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi44LjAiIH0gfSwgInNoYTUxMi1KUTVUdU1pNDVPd2k0L0JJTUFKQm9TUW9PSnUxMm9Pay9nQURxbGNVTDlKRWRIQjh2eWpVU3N4cWVOWG5tWEhqWUtNaTJXY1l0ZXpHRUVocVVJL0UyZz09Il0sCgogICAgIkB0YWJieV9haS9oaWpyaS1jb252ZXJ0ZXIiOiBbIkB0YWJieV9haS9oaWpyaS1jb252ZXJ0ZXJAMS4wLjUiLCAiIiwge30sICJzaGE1MTItcjViQ2xLcmNJdXNEb28wNDlkU0w4Q2F3bkhSNm1SZER3aGxRdUlnWlJOdHk2OHEweDhrM0xmMUJ0UEFNeFJmL0dnbkhCbklPNHVqZDMrR1FkTFd6eFE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvbm9kZSI6IFsiQHRhaWx3aW5kY3NzL25vZGVANC4zLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvcmVtYXBwaW5nIjogIl4yLjMuNSIsICJlbmhhbmNlZC1yZXNvbHZlIjogIl41LjIxLjAiLCAiaml0aSI6ICJeMi42LjEiLCAibGlnaHRuaW5nY3NzIjogIjEuMzIuMCIsICJtYWdpYy1zdHJpbmciOiAiXjAuMzAuMjEiLCAic291cmNlLW1hcC1qcyI6ICJeMS4yLjEiLCAidGFpbHdpbmRjc3MiOiAiNC4zLjAiIH0gfSwgInNoYTUxMi1hRmI0Z1VoRk9nZGg5QVhvNEl6QkVPekJra0F4bTlWaWd3REpuTUlZdjNsY2ZYQ0pWZXNOZmJFYUJsNEJOZ1ZSeWlkOTJBbWR2aXF3QlVCUktTZVkzZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZSI6IFsiQHRhaWx3aW5kY3NzL294aWRlQDQuMy4wIiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQHRhaWx3aW5kY3NzL294aWRlLWFuZHJvaWQtYXJtNjQiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtZGFyd2luLXg2NCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtZnJlZWJzZC14NjQiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybS1nbnVlYWJpaGYiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybTY0LWdudSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtbXVzbCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LWdudSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LW11c2wiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLXdhc20zMi13YXNpIjogIjQuMy4wIiwgIkB0YWlsd2luZGNzcy9veGlkZS13aW4zMi1hcm02NC1tc3ZjIjogIjQuMy4wIiwgIkB0YWlsd2luZGNzcy9veGlkZS13aW4zMi14NjQtbXN2YyI6ICI0LjMuMCIgfSB9LCAic2hhNTEyLUY3SFpHQmVOOUkwL0F1dUpTNVB3Y0Q4eGF5eDVyaTVHaGpZVURCRVZZVWtleHlBL2dpd2JETmpSVnJ4U2V6RTNUMjUwT1UySy93cC9sdFd4M1VPZWZnPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWFuZHJvaWQtYXJtNjQiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1hbmRyb2lkLWFybTY0QDQuMy4wIiwgIiIsIHsgIm9zIjogImFuZHJvaWQiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVRKUGlxNjd0S2xMdU9iUDZSa3d2VkdEb3hDTUJWdERnS2tMZmEvdXlqNy9GeXh2UXdIUytVT25WclhYZ2JFc2ZVYU1naVZ2QzRLYkpuUnIyNmhvNE5nPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NCI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NEA0LjMuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLW9NTi9XWlJiK1NPMzdCbVVFbEVnZUVXdVU4RS9IWFJraU9EeEp4TGUxVVRIVlhMcmRWU2dmYUpWN3BTbGhSR01TT2lYTHV4VElqZnNGM3dZdno4Y2dRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi14NjQiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1kYXJ3aW4teDY0QDQuMy4wIiwgIiIsIHsgIm9zIjogImRhcndpbiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLU42Q1VtdTRhNmJLVkFEZnc3N3AraXc2WWQ5UTNPQmhlMHZlYURYK1FhemZ1VllsUXNIZkRneEJyc2pRL0lXK3p5d0w4bVRyTmQwU2RKVC96Z3R2TWRBPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWZyZWVic2QteDY0IjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtZnJlZWJzZC14NjRANC4zLjAiLCAiIiwgeyAib3MiOiAiZnJlZWJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLXpETDVoQmtRZEg1QzZNcHFiSzNnUUFnUDgwdHNNd1NJMjZ2ak96akp0TkNNVW8wbEZnT0l0ekhLQkl1cE9aTlF4dDNvdVBIN1JQaHZOaGlUZkNlNUNRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybS1nbnVlYWJpaGYiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC1hcm0tZ251ZWFiaWhmQDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItUjA2SGROaTdBN09Fb01zZjZkNHRqWjcxUkNXblpRUEhqMm1ub3RTRlVSak5MZEJDK2NJZ1hRN2w4MUNxZW9pUWZ0amY2T09ibHhYTUluTWdOMlZ6TUE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtZ251IjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtZ251QDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1xVEpIRUxYOGpldGpoUlFIQ0xpbGtWTG15YnB6TlFBdGFJL2dhb1ZvaWRuL3VmYk5EYkFvOEtsSzJKK3lQb2M4d1F4dkR4Q21oLzVscjhuQzErbFRiZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC1hcm02NC1tdXNsIjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtbXVzbEA0LjMuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItWjZzdWtpUXNuZ25XTytsMzlYNHBQYmlXVDgxSUMrUExLRitQSHhJbHlaYkdOYjlNT0RmWWxYRVZsRnZlajVCT1pJbldYMDFrVnl6ZUx2SHNYaGZjelE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LWdudSI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LXg2NC1nbnVANC4zLjAiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1EUk5kUVJwU0d6UkdmQVJWdVZreHZNOFExMm5oMTlsNEJGL0c3ekdBMW9lKzl3Y0M2c2FGQkhUSVNycEljS3poaVh0U3JsU3JsdUNmdk11bGVkb0NUUT09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC14NjQtbXVzbCI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LXg2NC1tdXNsQDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItWjBJQURiRG84Ymg2STdoMklRTXg2MDFBZFhCTGZGcEVkVW90ZnQ4NmV2ZC84WlBmbFplOUNPUE84UTF2dytwZkxXSVVvOXpOL0pHWnZ3dUFKcWR1cWc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kiOiBbIkB0YWlsd2luZGNzcy9veGlkZS13YXNtMzItd2FzaUA0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAZW1uYXBpL2NvcmUiOiAiXjEuMTAuMCIsICJAZW1uYXBpL3J1bnRpbWUiOiAiXjEuMTAuMCIsICJAZW1uYXBpL3dhc2ktdGhyZWFkcyI6ICJeMS4yLjEiLCAiQG5hcGktcnMvd2FzbS1ydW50aW1lIjogIl4xLjEuNCIsICJAdHlieXMvd2FzbS11dGlsIjogIl4wLjEwLjEiLCAidHNsaWIiOiAiXjIuOC4xIiB9LCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItSE5aR09VeEVtRWxrc1lSN1M2c0M1alRlTkdwb2JBc3k5dTdHdTBBc2tKOC8yMEZSOUdxZWJVeUIrSEJjVS9heDZCSHVpdUppK09kYTRCK1lYNkgxeUE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2luMzItYXJtNjQtbXN2YyI6IFsiQHRhaWx3aW5kY3NzL294aWRlLXdpbjMyLWFybTY0LW1zdmNANC4zLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVBlK1JQVlRpMVQrcXltdXVScGNkdndTVlpqbmxsL2Y3bjhnQnhNTWgzeExUY3RNREtxcGRmR2ltYk15aW9xdExoVVlaeGRKOXdHTmhWN01LSHZnWnNRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLXdpbjMyLXg2NC1tc3ZjIjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtd2luMzIteDY0LW1zdmNANC4zLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1NdnJmMmtYVy95ZVcvT1RlelpsQ0dPaXJYUmNVdUxJQngvNVkxMkJhUE03d0pvcnlHNmRmUy9OSkw4YUJQcXRURXgvVm00VDR2S3pGVWNLRFQrVEtVQT09Il0sCgogICAgIkB0YWlsd2luZGNzcy9wb3N0Y3NzIjogWyJAdGFpbHdpbmRjc3MvcG9zdGNzc0A0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYWxsb2MvcXVpY2stbHJ1IjogIl41LjIuMCIsICJAdGFpbHdpbmRjc3Mvbm9kZSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUiOiAiNC4zLjAiLCAicG9zdGNzcyI6ICJeOC41LjEwIiwgInRhaWx3aW5kY3NzIjogIjQuMy4wIiB9IH0sICJzaGE1MTItSm0wNVRqeCs5eUNMR3Y1cXcxYys4NFBzZHM4TW55ckVRWUNCK0ZGazJsZ0dpVWpsUnFkeGtlNG1WVHVZcmoyeG5WWnFLaW0yQXByNXlTdVFSWUF3L3c9PSJdLAoKICAgICJAdHlieXMvd2FzbS11dGlsIjogWyJAdHlieXMvd2FzbS11dGlsQDAuMTAuMiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi40LjAiIH0gfSwgInNoYTUxMi1Sb0J2SjJYMHd1S2xXRklqcndmZkd3MUlxWkhLUXF6SWNoS2FhZFpaZm5OcHNBWXAybU0waDM2SnRQQ2pOREFIR2dZZXovMTV1TUJwZkd3Y2hoaU1nZz09Il0sCgogICAgIkB0eXBlcy9jaGFpIjogWyJAdHlwZXMvY2hhaUA1LjIuMyIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAdHlwZXMvZGVlcC1lcWwiOiAiKiIsICJhc3NlcnRpb24tZXJyb3IiOiAiXjIuMC4xIiB9IH0sICJzaGE1MTItTXc1NThvZUE5ZkZidjY1L3k0bUh0WERzOWJQbkZNWkFML2p4ZFBGVXBPSEhJWFg5MW1jZ0VIYlM1TGFocitwd1pGUjhBN0dRbGVSV2VJNmNHRkMyVUE9PSJdLAoKICAgICJAdHlwZXMvZGVlcC1lcWwiOiBbIkB0eXBlcy9kZWVwLWVxbEA0LjAuMiIsICIiLCB7fSwgInNoYTUxMi1jOWg5ZFZWTWlnTVBjNGJ3VHZDNWR4cXRxSlp3UVBlUHNXalBscFNPbm9qYm9yNnBHcWRrNTQxbGZBN0FxRlFyNXBCMUJSZHEwanVZOWRiODFCd3lGdz09Il0sCgogICAgIkB0eXBlcy9lc3RyZWUiOiBbIkB0eXBlcy9lc3RyZWVAMS4wLjkiLCAiIiwge30sICJzaGE1MTItR2hkUGd5MWVsNC9JbVAwNVgwNVV3NGN3Mi9NOTNCQ1VtbkV2V1pOU3RsQ3pFS01FNEZraytZcG9BNU9pSE5RbW9TN0NhZmI4WGEzUHlhOG0xUXJ6ZWc9PSJdLAoKICAgICJAdHlwZXMvbm9kZSI6IFsiQHR5cGVzL25vZGVAMjIuMTkuMTkiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidW5kaWNpLXR5cGVzIjogIn42LjIxLjAiIH0gfSwgInNoYTUxMi1keWgveE8yRmg1YllyZldhYXFHclJRUUdrTmRtWXc2QW1hQVV2WWVVTU5UV1F0dmI3OTZpa0xkbVRjaFJtT2xPaUlKMVREWGZXZ1Z4MVFrVWxRNkhldz09Il0sCgogICAgIkB0eXBlcy9yZWFjdCI6IFsiQHR5cGVzL3JlYWN0QDE5LjIuMTUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiY3NzdHlwZSI6ICJeMy4yLjIiIH0gfSwgInNoYTUxMi1lUndjR05IdmUrRThxdEVRU1NSbDZ1cmgrckZvcDR2OGdtNk84ckd2MjVDb2RidkZkTGpBMXZWUTFLa2lGRTB3MFVQT25iOHREaUZLTDVscDBydFk1UT09Il0sCgogICAgIkB0eXBlcy9yZWFjdC1kb20iOiBbIkB0eXBlcy9yZWFjdC1kb21AMTkuMi4zIiwgIiIsIHsgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJAdHlwZXMvcmVhY3QiOiAiXjE5LjIuMCIgfSB9LCAic2hhNTEyLWpwMkwvZVk2Zm4rS2dWVlFBT3FZSXRiRjBWWS9ZQXBlNU16MkYwYXlrU084Z3gzMWJZQ1p5dlNlWXhDSEt2ekhHNWVaamMrenlhUzVCckJXeWEyK2tRPT0iXSwKCiAgICAiQHZpdGVzdC9leHBlY3QiOiBbIkB2aXRlc3QvZXhwZWN0QDQuMS43IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBzdGFuZGFyZC1zY2hlbWEvc3BlYyI6ICJeMS4xLjAiLCAiQHR5cGVzL2NoYWkiOiAiXjUuMi4yIiwgIkB2aXRlc3Qvc3B5IjogIjQuMS43IiwgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjciLCAiY2hhaSI6ICJeNi4yLjIiLCAidGlueXJhaW5ib3ciOiAiXjMuMS4wIiB9IH0sICJzaGE1MTItMVIrdHcwb3J0SEViWkRHTXltbStwTjcvQUZRL1JrRkZkdGQ3RU4rVkJweW5LbUxiUDhBM3JwRVhkc2hCSjcrOGhROXpCSmgvaTFzMHlLTnR4QW5VN3c9PSJdLAoKICAgICJAdml0ZXN0L21vY2tlciI6IFsiQHZpdGVzdC9tb2NrZXJANC4xLjciLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHZpdGVzdC9zcHkiOiAiNC4xLjciLCAiZXN0cmVlLXdhbGtlciI6ICJeMy4wLjMiLCAibWFnaWMtc3RyaW5nIjogIl4wLjMwLjIxIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIm1zdyI6ICJeMi40LjkiLCAidml0ZSI6ICJeNi4wLjAgfHwgXjcuMC4wIHx8IF44LjAuMCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIm1zdyIsICJ2aXRlIl0gfSwgInNoYTUxMi12WTdudWFtS2dmdnBBMUtvYTNvWUl3L2s3RDZrWm5wR3lOTVpXOGxvb3cyYnNCWWxhMVRGZHFUYVhuY1dkUm40cGd3TnMrOTBSaG5YaEpTY0R3UWVKQT09Il0sCgogICAgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6IFsiQHZpdGVzdC9wcmV0dHktZm9ybWF0QDQuMS43IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRpbnlyYWluYm93IjogIl4zLjEuMCIgfSB9LCAic2hhNTEyLXVtZ0NhclRPWVFXSWFETXZHRFJaaWorNmI5b1ZlTEl5SnpmTitBUzg4ZTBaT1UzUVRnTk5TVHRqUU9wY3ZXcjNucDFOMGo0V2daaitzYjNvWUJEc2N3PT0iXSwKCiAgICAiQHZpdGVzdC9ydW5uZXIiOiBbIkB2aXRlc3QvcnVubmVyQDQuMS43IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjciLCAicGF0aGUiOiAiXjIuMC4zIiB9IH0sICJzaGE1MTItQmFwam1BUTJhSTc4V2RNRWZlVVdpdm5mVnpCK1ZQR3dXUlFjSkUwT1VxN3FFZUVjQnNDU2YrMFQ1aVJFQk5FNW5CYjR3QTVZYTBXNklBK3NnaGRFRnc9PSJdLAoKICAgICJAdml0ZXN0L3NuYXBzaG90IjogWyJAdml0ZXN0L3NuYXBzaG90QDQuMS43IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6ICI0LjEuNyIsICJAdml0ZXN0L3V0aWxzIjogIjQuMS43IiwgIm1hZ2ljLXN0cmluZyI6ICJeMC4zMC4yMSIsICJwYXRoZSI6ICJeMi4wLjMiIH0gfSwgInNoYTUxMi1aYWNMemphK1RtSmVaMWgxNHhXMkZCL1dwZWltVUQzaGFCWFFQeUpxeHZvOGpRVG1mZUE4enY1OG10ak4yQzdFSFhaRFlWY1ZZZFltQXhqa1dWdktDdz09Il0sCgogICAgIkB2aXRlc3Qvc3B5IjogWyJAdml0ZXN0L3NweUA0LjEuNyIsICIiLCB7fSwgInNoYTUxMi1rYmtJNUxNV2FreXVUSXZzNmZVSjVxZElWYjFYVktzWUpBVDRPSjkzOGNITVJPWU1TZm1vUWRaeTBhYUFuamJiYzhGNjF2a29UcXovQXorL0hpSXU1UT09Il0sCgogICAgIkB2aXRlc3QvdXRpbHMiOiBbIkB2aXRlc3QvdXRpbHNANC4xLjciLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHZpdGVzdC9wcmV0dHktZm9ybWF0IjogIjQuMS43IiwgImNvbnZlcnQtc291cmNlLW1hcCI6ICJeMi4wLjAiLCAidGlueXJhaW5ib3ciOiAiXjMuMS4wIiB9IH0sICJzaGE1MTItVDUzMldCdTc5MWNCeEpsQ2w2U08rSjE0bDgxRFF4NnVRSG0xYlFibUNEWTducWxFSWdremEvVUZuU0JOYVV0U2Y0MXVubGRERmpkT0JZRVFDNGI1SHc9PSJdLAoKICAgICJhY29ybiI6IFsiYWNvcm5AOC4xNi4wIiwgIiIsIHsgImJpbiI6IHsgImFjb3JuIjogImJpbi9hY29ybiIgfSB9LCAic2hhNTEyLVVWSnlFOU10dE9zQlFJREt3MXNrYjluQXdRdVI1d3VHRDMrODJLNkpnSmxtL1krS0k5Mm9Oc01OR1pDWWREc1Z0UkhTYWswcGNWNURubzUrNGpoOXN3PT0iXSwKCiAgICAiYW5zaS1yZWdleCI6IFsiYW5zaS1yZWdleEA1LjAuMSIsICIiLCB7fSwgInNoYTUxMi1xdUpRWGxUU1VHTDJMSDlTVVhvOFZ3c1k0c29hbmhnbzZMTlNtODRFMUxCY0U4czNPMHdwZGlSenlSOXovWlpKTWxNV3YzN3FPT2I5cGRKbE1VRUtGUT09Il0sCgogICAgImFuc2ktc3R5bGVzIjogWyJhbnNpLXN0eWxlc0A0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjb2xvci1jb252ZXJ0IjogIl4yLjAuMSIgfSB9LCAic2hhNTEyLXpiQjlyQ0pBVDFyYmppVkRiMmhxS0ZITllMeGd0azhOVVJ4WjNJWndEM0Y2TnR4YlhaUUNublNpMUxreCtJRG9oZFBsRnAyMjJ3VkFMSWhlWkpRU0VnPT0iXSwKCiAgICAiYXNzZXJ0aW9uLWVycm9yIjogWyJhc3NlcnRpb24tZXJyb3JAMi4wLjEiLCAiIiwge30sICJzaGE1MTItSXppOFJRY2ZmcUNlTlZnRmlnS2xpMXNza2xJYnBIbkNZYzZBa25YR1lvQjZnckpxeWVieTdqdjEySlVRZ21UQW5JRG5iY2sxdXhrc1Q0ZHpOM1BXQkE9PSJdLAoKICAgICJiYXNlbGluZS1icm93c2VyLW1hcHBpbmciOiBbImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZ0AyLjEwLjMxIiwgIiIsIHsgImJpbiI6IHsgImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZyI6ICJkaXN0L2NsaS5janMiIH0gfSwgInNoYTUxMi1NdWpZTzNlUDcydXZtU0UwaTR3bHRzb2RSZklwWkFUUDNqdnpSTlJHR3hneklkN2FWb2NWSkpWM25mMDFxbnp6S0ZHeFFWQzlicFd4bDVjanhUci83UT09Il0sCgogICAgImJ1ZmZlci1mcm9tIjogWyJidWZmZXItZnJvbUAxLjEuMiIsICIiLCB7fSwgInNoYTUxMi1FK1hRQ1J3U2JhYWlDaHR2Nms2RHdnYytieCtCczZ2dUtKSEhsNWtveC9CYUtiaGlYenFRT3dLNGNPMjJ5RWxHcDJPQ21qd1ZoVDNIbXhneVBHbkpmUT09Il0sCgogICAgImNhbml1c2UtbGl0ZSI6IFsiY2FuaXVzZS1saXRlQDEuMC4zMDAwMTc5MyIsICIiLCB7fSwgInNoYTUxMi1pd1NzWVdhQ09vaDI2Y1Y4TndOUlZpSGxyZlV2WXNIRGZSVmNidG13MEtnNlBKSVpaWHdNa2oxNDQyRllMQkdrZVVmMWp1QXNVM0RUZnhXNTc5bXJQQT09Il0sCgogICAgImNoYWkiOiBbImNoYWlANi4yLjIiLCAiIiwge30sICJzaGE1MTItTlVQUmx1T2ZPaVRLQkt2V1B0U0Q0UGhGdldDcU9pMEJHU3ROV3M1N1g5anM3WEdUcHJTbUZvejVGMHRXaFI0V1BqTmVSOWpYcWRDNy9VcFNKVG5sUmc9PSJdLAoKICAgICJjaGFsayI6IFsiY2hhbGtANC4xLjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiYW5zaS1zdHlsZXMiOiAiXjQuMS4wIiwgInN1cHBvcnRzLWNvbG9yIjogIl43LjEuMCIgfSB9LCAic2hhNTEyLW9LbmJoRnlSSVhwVXVlejhpQk1teUVhNG5iajRJT1F5dWhjL3d5OWtZNy9XVlBjd0lPOVZBNjY4UHU4UmtPNyswRzc2U0xST2V5dzlDcFEwNjFpNG1BPT0iXSwKCiAgICAiY2xpZW50LW9ubHkiOiBbImNsaWVudC1vbmx5QDAuMC4xIiwgIiIsIHt9LCAic2hhNTEyLUlWM091MGpTTXpacmQzcFo0OG5Ma1Q5REE3QWcxcG5QemFpUWhwVzdjM1JiY3FxenZ6elZ1K0w4Z2ZxTXAvOElNMk1RdFNpcWFDeHJyY2Z1OEk4ck1BPT0iXSwKCiAgICAiY2xpdWkiOiBbImNsaXVpQDguMC4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInN0cmluZy13aWR0aCI6ICJeNC4yLjAiLCAic3RyaXAtYW5zaSI6ICJeNi4wLjEiLCAid3JhcC1hbnNpIjogIl43LjAuMCIgfSB9LCAic2hhNTEyLUJTZU5ueXVzNzVDNC8vTlE5Z1F0MS9jc1RYeW8vOFNiK2FmTEFrekFwdEZ1TXNvZDlIRm9rR051ZFpwaS9vUVY3M2huVksrc1IrNVBWUk1kK0RyN1lRPT0iXSwKCiAgICAiY2xzeCI6IFsiY2xzeEAyLjEuMSIsICIiLCB7fSwgInNoYTUxMi1lWW0wUVdCdFVyQldaV0cwZDM4Nk9HQXcxNlo5OTVQaU9WbzJCN2JqV1NiSGVkR2w1ZTBaV2FxNjVrT0dnVVNOZXNFSURrQjlJU2JUZy9KSzlkaENaQT09Il0sCgogICAgImNvbG9yLWNvbnZlcnQiOiBbImNvbG9yLWNvbnZlcnRAMi4wLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiY29sb3ItbmFtZSI6ICJ+MS4xLjQiIH0gfSwgInNoYTUxMi1SUkVDUHNqN2l1L3hiNW9LWWNzRkhTcHBGTm5zai81Mk9WVFJLYjR6UDVvblh3VkYzelZtbVRvTmNPZkdDK0NSRHBmSy9VNTg0Zk1nMzhaSENhRWxLUT09Il0sCgogICAgImNvbG9yLW5hbWUiOiBbImNvbG9yLW5hbWVAMS4xLjQiLCAiIiwge30sICJzaGE1MTItZE95KzNBdVczYTJ3TmJaSEl1TVpwVGNnakd1TFUvdUJML3ViY1pGOU9YYkRvOGZmNE84eVZwNUJmMGVmUzh1RW9ZbzVxNEZ4N2RZOU9nUUdYZ0FzUUE9PSJdLAoKICAgICJjb21tYW5kZXIiOiBbImNvbW1hbmRlckAyLjIwLjMiLCAiIiwge30sICJzaGE1MTItR3BWa21NOHZGMnZRVWtqMkx2Wm1EMzVKeGVKT0xDd0o5Y1VrdWd5azJudWhidjMrbUp2cExZWXQrMCtVU014RStvaitleS9sSkVuaFp3NzV4L09NY1E9PSJdLAoKICAgICJjb25jdXJyZW50bHkiOiBbImNvbmN1cnJlbnRseUA5LjIuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjaGFsayI6ICI0LjEuMiIsICJyeGpzIjogIjcuOC4yIiwgInNoZWxsLXF1b3RlIjogIjEuOC4zIiwgInN1cHBvcnRzLWNvbG9yIjogIjguMS4xIiwgInRyZWUta2lsbCI6ICIxLjIuMiIsICJ5YXJncyI6ICIxNy43LjIiIH0sICJiaW4iOiB7ICJjb25jIjogImRpc3QvYmluL2NvbmN1cnJlbnRseS5qcyIsICJjb25jdXJyZW50bHkiOiAiZGlzdC9iaW4vY29uY3VycmVudGx5LmpzIiB9IH0sICJzaGE1MTItZnNmck8wTXhWNjRabm95OC9sMXZWSWpqSGEyOVNaeXlxUGdRQndoaURjYVc4d0pjMlczWFdWT0d4NE0zb0pCbnYvemRVWklJcDFnRGVTOThHelA4Tmc9PSJdLAoKICAgICJjb252ZXJ0LXNvdXJjZS1tYXAiOiBbImNvbnZlcnQtc291cmNlLW1hcEAyLjAuMCIsICIiLCB7fSwgInNoYTUxMi1LdnA0NTlIclYyRkVKMUNBc2kxS3UrTVkza2FzSDE5VEZ5a1R6MnhXbU1lcTZiazJOVTNYWHZmSitRNjFtMHhrdFd3dCsxSFNZZjNKWnNUbXMzYVJKZz09Il0sCgogICAgImNzc3R5cGUiOiBbImNzc3R5cGVAMy4yLjMiLCAiIiwge30sICJzaGE1MTItejFIR0tjWXkyeEE4QUdRZndybjBQQXkrUEI3WC9HU2ozVVZKVzlxS3luNDN4V2ErZ2w1blhtVTRxcUxNUnpXVkxGQzhLdXNVWDhULzBrQ2lPWXBBSVE9PSJdLAoKICAgICJkYXRlLWZucyI6IFsiZGF0ZS1mbnNANC4yLjEiLCAiIiwge30sICJzaGE1MTItMzdSaFNkeGFHMXN1ZW42VkRDemE2ck5yUWZvb3lRaDU3SEZWUHdRR0VxMlFXbGlWTHpQUVo4T2EwMTd3ZU91K0haQ256STdOM1BmL3d5b0JLZkVxckE9PSJdLAoKICAgICJkYXRlLWZucy1qYWxhbGkiOiBbImRhdGUtZm5zLWphbGFsaUA0LjEuMC0wIiwgIiIsIHt9LCAic2hhNTEyLWhUSVAveit0K3FLd0JEY21tc25taldUZHV4Q2crNUtmZHFXUXZiMlgvOEM5K2tuWVk2ZXBOL3BmeGREdXlWbFNWZUZ6MHNNNWVFZndJVVE3MFU0Y2tnPT0iXSwKCiAgICAiZGV0ZWN0LWxpYmMiOiBbImRldGVjdC1saWJjQDIuMS4yIiwgIiIsIHt9LCAic2hhNTEyLUJ0ajJCT09PODNvM1d5SDU5ZThNZ1hzeEVRVmNhcmtVT3BFWXJ1YkIwdXJ3bk4xMHlRMzY0cnNpQnlVMTFuWmxxV1labTA1aS9vZjdpbzRtemloQnRRPT0iXSwKCiAgICAiZW1vamktcmVnZXgiOiBbImVtb2ppLXJlZ2V4QDguMC4wIiwgIiIsIHt9LCAic2hhNTEyLU1Tall6Y1dOT0EwZXdBSHB6ME14cFlGdndnNnlqeTFORzN4dGVvcXo2NDRWQ28vUlBnbnIxL0dHdCtpYzNpSlR6UThFdTNUZE0xNFNhd25WVW1HRTZBPT0iXSwKCiAgICAiZW5oYW5jZWQtcmVzb2x2ZSI6IFsiZW5oYW5jZWQtcmVzb2x2ZUA1LjIxLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZ3JhY2VmdWwtZnMiOiAiXjQuMi40IiwgInRhcGFibGUiOiAiXjIuMy4zIiB9IH0sICJzaGE1MTItYU5uR0N2YkovUkl5V28xSXVoTmRWam5ORitFakg5d3B6cE5IdCtjaS9tOUhlOUxKdlVOOHdyQ2NYanA5Y1dzR05BdXZTcFZGVHgvdnJhQUZROHFHalE9PSJdLAoKICAgICJlcy1tb2R1bGUtbGV4ZXIiOiBbImVzLW1vZHVsZS1sZXhlckAyLjEuMCIsICIiLCB7fSwgInNoYTUxMi1uMjd6VFlNall1MWFqNE1qQ1d6U1A3RzlyNzV1dHNhb2M4bTYxd2VLK1c4Sk1CR0dReWJkNDNHc3RDWFozV05tU0Z0R1Q5d2k1OXFRVFc2bWhUUjVMUT09Il0sCgogICAgImVzYnVpbGQiOiBbImVzYnVpbGRAMC4yNS40IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGVzYnVpbGQvYWl4LXBwYzY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9hbmRyb2lkLWFybSI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvYW5kcm9pZC1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvYW5kcm9pZC14NjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2Rhcndpbi1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZGFyd2luLXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZnJlZWJzZC1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZnJlZWJzZC14NjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWFybSI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtYXJtNjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWlhMzIiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWxvb25nNjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LW1pcHM2NGVsIjogIjAuMjUuNCIsICJAZXNidWlsZC9saW51eC1wcGM2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtcmlzY3Y2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtczM5MHgiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbmV0YnNkLWFybTY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9uZXRic2QteDY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9vcGVuYnNkLWFybTY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9vcGVuYnNkLXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvc3Vub3MteDY0IjogIjAuMjUuNCIsICJAZXNidWlsZC93aW4zMi1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvd2luMzItaWEzMiI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvd2luMzIteDY0IjogIjAuMjUuNCIgfSwgImJpbiI6IHsgImVzYnVpbGQiOiAiYmluL2VzYnVpbGQiIH0gfSwgInNoYTUxMi04cGdqTFVjVWpjZ0RnKzJRNE5ZWG5QYm8vdm5jQVk0VW15YUNtMGpaZXZFUnFDSFpJYVd3ZEpIa2Y4WFF0dTRBeFNLQ2R2clViVDBYVXIxSWRaekk4UT09Il0sCgogICAgImVzY2FsYWRlIjogWyJlc2NhbGFkZUAzLjIuMCIsICIiLCB7fSwgInNoYTUxMi1XVWoycWx4YVF0TzRnNlBxNWMyOUdUY1dHRHlkOGl0TDh6VGxpcGdFQ3ozSmVzQWlpT0tvdGQ4SlU2b3RCM1BBQ2dHNnhrSlV5Vmhib01TK2JqZS9qQT09Il0sCgogICAgImVzdHJlZS13YWxrZXIiOiBbImVzdHJlZS13YWxrZXJAMy4wLjMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL2VzdHJlZSI6ICJeMS4wLjAiIH0gfSwgInNoYTUxMi03UlVLZlhnU01Na3p0Nlp1WG1xYXBPdXJMR1BQZmdqNmw5dVJaN2xSR29sdmsweTJ5b2NjMzVMZGN4S0M1UFFaZG4yRE1xaW9BUTJOb1djclRLbW02Zz09Il0sCgogICAgImV4cGVjdC10eXBlIjogWyJleHBlY3QtdHlwZUAxLjMuMCIsICIiLCB7fSwgInNoYTUxMi1rbnZ5ZWF1WWhxak9ZdlE2Nk16blNNczgzd21IckN5Y05FTjZBbysyQWVZRWZ4VUlrdWlWeGRFYTFxbEdFUEsrV2UzbjBUSGlEY2lZU3NDY2dXL0RvQT09Il0sCgogICAgImZkaXIiOiBbImZkaXJANi41LjAiLCAiIiwgeyAicGVlckRlcGVuZGVuY2llcyI6IHsgInBpY29tYXRjaCI6ICJeMyB8fCBeNCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbInBpY29tYXRjaCJdIH0sICJzaGE1MTItdEliWXRaYnVjT3MwQlJHcVBKa3NoSlVZZEwrU0RIN2RWTThnankrRVJwM1dBVWpMRUZKRSswMmthbnlIdHdqV09ud3JLWUJpd0FtTTBwNGtMSkFuWGc9PSJdLAoKICAgICJmc2V2ZW50cyI6IFsiZnNldmVudHNAMi4zLjMiLCAiIiwgeyAib3MiOiAiZGFyd2luIiB9LCAic2hhNTEyLTV4b0RmWCtmTDdmYUFUbmFnbVdQcGJGdHdoL1I3N1dtTU1xcUhHUzY1QzN2dkIwWUhyZ0YrQjFZbVozNDQxdE1qNW42M2swMjEyWE5vSnd6bGhmZlF3PT0iXSwKCiAgICAiZ2V0LWNhbGxlci1maWxlIjogWyJnZXQtY2FsbGVyLWZpbGVAMi4wLjUiLCAiIiwge30sICJzaGE1MTItRHlGUDNCTS8zWUhUUU9DVUwvdzBPWkhSMGxwS2VHcnhvdGNIV2NxTkVkbmx0cUZ3WFZmaEVCUTk0ZUlvMzRBZlFwbzByR2tpNGN5SWlmdFkwNmgyRmc9PSJdLAoKICAgICJncmFjZWZ1bC1mcyI6IFsiZ3JhY2VmdWwtZnNANC4yLjExIiwgIiIsIHt9LCAic2hhNTEyLVJiSjUvam1GY05OQ2NEVjVvOWVUbkJMSi9Ic3pXVjBQNzNiYytGZjRuUy9ySmorWWFTNklHeWlPTDBWb0JZWCtsMVdybDNrNjNoL0tySCtuaEowWHZRPT0iXSwKCiAgICAiaGFzLWZsYWciOiBbImhhcy1mbGFnQDQuMC4wIiwgIiIsIHt9LCAic2hhNTEyLUV5a0pUL1ExS2pUV2N0cHBnSUFnZlNPMHRLVnVaVWpoZ01yMTdrcVR1bU1sNkFmdjNFSVNsZVU3cVpVem9YREZUQUhUREM0Tk9vRy9aeFUzRXZsTVBRPT0iXSwKCiAgICAiaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQiOiBbImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50QDMuMC4wIiwgIiIsIHt9LCAic2hhNTEyLXp5bW01K3Urc0NzU1d5RDlxTmFlalYzREZ2aENLY2xLZGl6WWFKVXVIQTgzUkxqYjduU3VHbmRkQ0hHdjBoaytLWTdCTUFsc1dlSzRVZWc2RVY2WFFnPT0iXSwKCiAgICAiaml0aSI6IFsiaml0aUAyLjcuMCIsICIiLCB7ICJiaW4iOiB7ICJqaXRpIjogImxpYi9qaXRpLWNsaS5tanMiIH0gfSwgInNoYTUxMi1BQy83Sm9mSnZaR3JybmVXTmFFbkplT0xVeCtKbEd0N3ROYTB3WmlSUFQ0TVkxd21mS2p0Mis2TzJwMnV6Mitza2xsOE9aWm1KTU5xZWtlN2tLYk5nUT09Il0sCgogICAgImxpYnBob25lbnVtYmVyLWpzIjogWyJsaWJwaG9uZW51bWJlci1qc0AxLjEyLjQxIiwgIiIsIHt9LCAic2hhNTEyLWxzbU1tR1hCeFhJSy9WTUxFajBrTDZNdFVzMWtCR2oxblRDemk2emdRb0cxREV3cXd0MkRReUh4Y0x5a2NlSXhBbmZFM2h5YTdOdUloNlBwQzZTM2ZBPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzIjogWyJsaWdodG5pbmdjc3NAMS4zMi4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImRldGVjdC1saWJjIjogIl4yLjAuMyIgfSwgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAibGlnaHRuaW5nY3NzLWFuZHJvaWQtYXJtNjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1kYXJ3aW4tYXJtNjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1kYXJ3aW4teDY0IjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtZnJlZWJzZC14NjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1saW51eC1hcm0tZ251ZWFiaWhmIjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251IjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtbXVzbCI6ICIxLjMyLjAiLCAibGlnaHRuaW5nY3NzLWxpbnV4LXg2NC1nbnUiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtbXVzbCI6ICIxLjMyLjAiLCAibGlnaHRuaW5nY3NzLXdpbjMyLWFybTY0LW1zdmMiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy13aW4zMi14NjQtbXN2YyI6ICIxLjMyLjAiIH0gfSwgInNoYTUxMi1OWFlCemluTnJibGZyYVBHeXJiUG9EMTlDMWg5bGZJLzFtemdXWXZYVVRlNDE0R3ovWDFGRDJYQlpTWk03clJUck1BOEpMM090QWFHaWZySUtoUTV5UT09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1hbmRyb2lkLWFybTY0IjogWyJsaWdodG5pbmdjc3MtYW5kcm9pZC1hcm02NEAxLjMyLjAiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItWUs3L0NsVHQ0a0FLMHZvNnczWCtQbm0wRDJjZjJ2UEhiaE9YZG9OdGkxR2EwYWwxUDRUQlpod2pBVHZqTndMRUJDbkt2akpjMmpRZ0hYSDBORXdsQWc9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtZGFyd2luLWFybTY0IjogWyJsaWdodG5pbmdjc3MtZGFyd2luLWFybTY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVJ6ZUc5SnU1YmFnMkJ2MS9sd2xWSnZCRTNxNlR0WHNrZFpMTEN5Zmc1cHQrSEx6OUJxbElDTzdMWk03VkhOVFRuLzVQUmhIRkJTams1bGM0Y21zY1BRPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzLWRhcndpbi14NjQiOiBbImxpZ2h0bmluZ2Nzcy1kYXJ3aW4teDY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1VK1FzQnAybS9zMndxcFVZVC82d25sYWdkWmJ0WmRuZFNtdXQvTkpxbENjTUxUV3A1bXVDcklEK0s1VUo2anFEMkJGc2hlakNZWG5pUERiTmg3M1Y4dz09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1mcmVlYnNkLXg2NCI6IFsibGlnaHRuaW5nY3NzLWZyZWVic2QteDY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSkNUaWdlZEVrc1prM3RIVFR0aG5NZFZmR2Y2MUZreThKaTJFNFlqVVRFUVgxNHhpeS9sVHpYbnUxdndpWmUzYlllMHErU3BzU0gvQ1RlRFhLNldIaWc9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtLWdudWVhYmloZiI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LWFybS1nbnVlYWJpaGZAMS4zMi4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTIteDZybm5wUmEyR0wwelFPa3Q2cnRzM1lEUHpkdUxwV3Z3QUY2RU1oWEZWWlhENHRQckJrRUZxekdvd3pDc0lXc1BqcVNLK3R5TkVPRFVCWGVlVkhTa3c9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251IjogWyJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItMG5uTXlveU9MUkpYZmJNT2lsYVNSY0xIM0p3NXo5SEROR2ZUL2d3Q1BnYURqbngwaTh3N3ZCekZMRlIxZjZDTUxLRjhnVmJlYm1rVU4zZmEva1FKcFE9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtbXVzbCI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LWFybTY0LW11c2xAMS4zMi4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1VcFFrb2VucjRVSkV6Z1ZJWXBJODBsREZ2Um1QVmc2b3Fib05IZm9INENRSWZOQStIT3JaN01vN0taUDAyZEM2TGpnaFBRSmVCc3ZYaEpvZC93bklCZz09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtZ251IjogWyJsaWdodG5pbmdjc3MtbGludXgteDY0LWdudUAxLjMyLjAiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1WN1FyNTJJaFptZEtQVnIrVnR3OG8rV0xzUUpZQ1RkOGxvSWZwRGFNUldHVVpmQk9ZRUpleUpJa3FHSURNWlB3UHgyNHBVTWZ3U3h4SThwaHIvTWJPQT09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtbXVzbCI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LXg2NC1tdXNsQDEuMzIuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLWJZY0xwK1ZiMGF3c2lYZy84MHVDUmV6Q1lITmcxL2wzbXQwZ3pIbldWOVhQMVc1c0thNS9UQ2RHV2FSL3pCTTJQZUYvSGJzUXYvajJVUk5PaVZ1eFdnPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzLXdpbjMyLWFybTY0LW1zdmMiOiBbImxpZ2h0bmluZ2Nzcy13aW4zMi1hcm02NC1tc3ZjQDEuMzIuMCIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItOFNiQzhCUjQwcFM2YmFDTThzYnRZRFN3RVZRZDRKbEZUT2xhRDNnV0dIZlRoVGNBQm5OREJkYTZlVFplcWJvZmFsSUpoRngwcUt6Z0hKbWNQVG5HZHc9PSJdLAoKICAgICJsaWdodG5pbmdjc3Mtd2luMzIteDY0LW1zdmMiOiBbImxpZ2h0bmluZ2Nzcy13aW4zMi14NjQtbXN2Y0AxLjMyLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1BbXE5Qi9Tb1pZZERpMWtGcm9qbm9xUEx4WWhRNFdvNVhpTDhFVkpyVnNCOEFSb0MxUFdXNlZHdFQwV0tDZW1qeThhQytsb3VKbmpTN1UxOHgzYjA2UT09Il0sCgogICAgIm1hZ2ljLXN0cmluZyI6IFsibWFnaWMtc3RyaW5nQDAuMzAuMjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjIjogIl4xLjUuNSIgfSB9LCAic2hhNTEyLXZkMkY0WVV5RVhLR2NMSG9xK1RFeUNqeHVlU2VIbkZ4eXlqTnA4MHlnMFhWNHZVaG5EZXIvbHZ2bHFNL2FyQjViWFFONUsyLzNvaW55Q1J5eDhUMkNRPT0iXSwKCiAgICAibmFub2lkIjogWyJuYW5vaWRAMy4zLjEyIiwgIiIsIHsgImJpbiI6IHsgIm5hbm9pZCI6ICJiaW4vbmFub2lkLmNqcyIgfSB9LCAic2hhNTEyLVpCOVJILzM5cXBxNVZ1NlkrTm1VYUZoUVI2cHArTTJYdDc2WEJuRXdEYUdjVkFxaGx2eHJsM0IyYktTNUQzTkgzUVI3NnYzYVNyS2FGL0tpeTdsRXRRPT0iXSwKCiAgICAibmV4dCI6IFsibmV4dEAxNi4yLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQG5leHQvZW52IjogIjE2LjIuNiIsICJAc3djL2hlbHBlcnMiOiAiMC41LjE1IiwgImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZyI6ICJeMi45LjE5IiwgImNhbml1c2UtbGl0ZSI6ICJeMS4wLjMwMDAxNTc5IiwgInBvc3Rjc3MiOiAiOC40LjMxIiwgInN0eWxlZC1qc3giOiAiNS4xLjYiIH0sICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBuZXh0L3N3Yy1kYXJ3aW4tYXJtNjQiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy1kYXJ3aW4teDY0IjogIjE2LjIuNiIsICJAbmV4dC9zd2MtbGludXgtYXJtNjQtZ251IjogIjE2LjIuNiIsICJAbmV4dC9zd2MtbGludXgtYXJtNjQtbXVzbCI6ICIxNi4yLjYiLCAiQG5leHQvc3djLWxpbnV4LXg2NC1nbnUiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy1saW51eC14NjQtbXVzbCI6ICIxNi4yLjYiLCAiQG5leHQvc3djLXdpbjMyLWFybTY0LW1zdmMiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy13aW4zMi14NjQtbXN2YyI6ICIxNi4yLjYiLCAic2hhcnAiOiAiXjAuMzQuNSIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJAb3BlbnRlbGVtZXRyeS9hcGkiOiAiXjEuMS4wIiwgIkBwbGF5d3JpZ2h0L3Rlc3QiOiAiXjEuNTEuMSIsICJiYWJlbC1wbHVnaW4tcmVhY3QtY29tcGlsZXIiOiAiKiIsICJyZWFjdCI6ICJeMTguMi4wIHx8IDE5LjAuMC1yYy1kZTY4ZDJmNC0yMDI0MTIwNCB8fCBeMTkuMC4wIiwgInJlYWN0LWRvbSI6ICJeMTguMi4wIHx8IDE5LjAuMC1yYy1kZTY4ZDJmNC0yMDI0MTIwNCB8fCBeMTkuMC4wIiwgInNhc3MiOiAiXjEuMy4wIiB9LCAib3B0aW9uYWxQZWVycyI6IFsiQG9wZW50ZWxlbWV0cnkvYXBpIiwgIkBwbGF5d3JpZ2h0L3Rlc3QiLCAiYmFiZWwtcGx1Z2luLXJlYWN0LWNvbXBpbGVyIiwgInNhc3MiXSwgImJpbiI6IHsgIm5leHQiOiAiZGlzdC9iaW4vbmV4dCIgfSB9LCAic2hhNTEyLXFPVmdLSmcxK0F0MTVOcGVVUCtlSmdDSHZUQ2dYc29nd2VxODdSaS9JeDdQa3FRSGc0c2RhWG1TRnFLbGdhSVhFNGtXMGcyNUxFNjhXODdVQU5sSHR3PT0iXSwKCiAgICAib2J1ZyI6IFsib2J1Z0AyLjEuMSIsICIiLCB7fSwgInNoYTUxMi11VHFGOU11UHJhQVErSXNuUGYzNjZSRzRjUDlSdFVpN01MTzFOM0tFYyt3YjBhNnlLcGVMMGxtazJJQjFqWTVLSFBBbFRjNlQvSlJkQy9ZcXhITndrUT09Il0sCgogICAgInBhdGhlIjogWyJwYXRoZUAyLjAuMyIsICIiLCB7fSwgInNoYTUxMi1XVWpHY0FxUDFnUWFjb1FlK09CSnNGQTdMZDREeVh1VUlqWjVjYzc1Y0xIdko3ZHROc1R1Z3BoeElBRHdzcFMrQXJhQVVlUENLclNWdFBMRmovRjg4dz09Il0sCgogICAgInBpY29jb2xvcnMiOiBbInBpY29jb2xvcnNAMS4xLjEiLCAiIiwge30sICJzaGE1MTIteGNlSDJzbmh0YjVNOWxpcURzbUV3NTZsZTM3Nm1UWmtFWC9qRWIvUnhORnllZ051bDdlTnNsQ1hQOUZEai9MY3UwWDhLRXlNY2VQMm50cGFIckRFVkE9PSJdLAoKICAgICJwaWNvbWF0Y2giOiBbInBpY29tYXRjaEA0LjAuNCIsICIiLCB7fSwgInNoYTUxMi1RUDg4QkFLdk1hbS8zTnhINnZqMm8yMVI2TWp4WlVBZDZubHdBUy9wbkd2TjlJVkxvY0xIeEdZSXpGaGc2ZlVRKzV0aDZQNGR2NGVXOWpYM0RTSWo3QT09Il0sCgogICAgInBvc3Rjc3MiOiBbInBvc3Rjc3NAOC41LjE1IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIm5hbm9pZCI6ICJeMy4zLjEyIiwgInBpY29jb2xvcnMiOiAiXjEuMS4xIiwgInNvdXJjZS1tYXAtanMiOiAiXjEuMi4xIiB9IH0sICJzaGE1MTItRmZSOHNqZDRlbTJUNmZiM0kyTXdBSlU3SFdWTXI5emJhK2VubVFlZVdGZkNibStVT0MvMFg0RFM4WHRwVVRNd1dNR2JqS1lQN3hqZk5la3p5R21CM0E9PSJdLAoKICAgICJyZWFjdCI6IFsicmVhY3RAMTkuMi42IiwgIiIsIHt9LCAic2hhNTEyLXNmV0dHZmF2aTB4cjhQZzBzVnN5SE1BT3ppVllLZ1BMTnJTN2lnK2l2TU5iM3diQ0J3M0t4dGZsc0dCQXdEM2dZUWxFL0FFWnNUTGdUb1JyU0NqYjBRPT0iXSwKCiAgICAicmVhY3QtZGF5LXBpY2tlciI6IFsicmVhY3QtZGF5LXBpY2tlckA5LjE0LjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGRhdGUtZm5zL3R6IjogIl4xLjQuMSIsICJAdGFiYnlfYWkvaGlqcmktY29udmVydGVyIjogIjEuMC41IiwgImRhdGUtZm5zIjogIl40LjEuMCIsICJkYXRlLWZucy1qYWxhbGkiOiAiNC4xLjAtMCIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJyZWFjdCI6ICI+PTE2LjguMCIgfSB9LCAic2hhNTEyLXRCYW9EV2pQd2UwTTVwR3J1bTRIMFNSNkx5aytCTzlvSG5wOUpiS3BHS1cybWxyYU5QZ1A5Qk1mc2c1cFdwd3Jzc0FSbWVxazdZQmwyb1h1dFpUYUhBPT0iXSwKCiAgICAicmVhY3QtZG9tIjogWyJyZWFjdC1kb21AMTkuMi42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInNjaGVkdWxlciI6ICJeMC4yNy4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgInJlYWN0IjogIl4xOS4yLjYiIH0gfSwgInNoYTUxMi0wcHJNSStodkJiUGpzV254REx4bENHeU04UE42VXVXakVVQ1ltWmhPNjd4SVY5WGFzYS9yL3ZEbnErWHlxNExvMjdnOFFTYk81WXpBUnUwRDFTcHMzZz09Il0sCgogICAgInJlcXVpcmUtZGlyZWN0b3J5IjogWyJyZXF1aXJlLWRpcmVjdG9yeUAyLjEuMSIsICIiLCB7fSwgInNoYTUxMi1mR3hFSTcrd3NHOXhydmRqc3JsbUwyMk9NVFRpSFJ3QU1yb2lFZU1ncThnem9MQy9QUXI3UnNSRFNUTFVnL2JaQVp0RitUVklrSGM2LzRSSUtydWkrUT09Il0sCgogICAgInJlc2VsZWN0IjogWyJyZXNlbGVjdEA1LjIuMCIsICIiLCB7fSwgInNoYTUxMi1BZ1ozVU9abTNZbmRmcko0T1lqZ3JUN2JtQ20vMWlxa2p2RWZIL29ZanpoNlBEMnF3NFF1VDNqam5YSXJwZHQ0TVRwTVhjbE1UM2xYYm1SWStYUmFrdz09Il0sCgogICAgInJvbGxkb3duIjogWyJyb2xsZG93bkAxLjAuMiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAb3hjLXByb2plY3QvdHlwZXMiOiAiPTAuMTMyLjAiLCAiQHJvbGxkb3duL3BsdWdpbnV0aWxzIjogIl4xLjAuMCIgfSwgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQHJvbGxkb3duL2JpbmRpbmctYW5kcm9pZC1hcm02NCI6ICIxLjAuMiIsICJAcm9sbGRvd24vYmluZGluZy1kYXJ3aW4tYXJtNjQiOiAiMS4wLjIiLCAiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NCI6ICIxLjAuMiIsICJAcm9sbGRvd24vYmluZGluZy1mcmVlYnNkLXg2NCI6ICIxLjAuMiIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmIjogIjEuMC4yIiwgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LWFybTY0LWdudSI6ICIxLjAuMiIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsIjogIjEuMC4yIiwgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXBwYzY0LWdudSI6ICIxLjAuMiIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1zMzkweC1nbnUiOiAiMS4wLjIiLCAiQHJvbGxkb3duL2JpbmRpbmctbGludXgteDY0LWdudSI6ICIxLjAuMiIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC14NjQtbXVzbCI6ICIxLjAuMiIsICJAcm9sbGRvd24vYmluZGluZy1vcGVuaGFybW9ueS1hcm02NCI6ICIxLjAuMiIsICJAcm9sbGRvd24vYmluZGluZy13YXNtMzItd2FzaSI6ICIxLjAuMiIsICJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjIjogIjEuMC4yIiwgIkByb2xsZG93bi9iaW5kaW5nLXdpbjMyLXg2NC1tc3ZjIjogIjEuMC4yIiB9LCAiYmluIjogeyAicm9sbGRvd24iOiAiLi9iaW4vY2xpLm1qcyIgfSB9LCAic2hhNTEyLW9aeDV6VkR0VkI0NEFXM2VhaWZnRG1sMWdXUkRaR3ZqY2ZkeG9uRTRzd05QRzk4UHJyWGphTy9Lcm5VanpsTW56dENDUlZsVXVlQTFrQ1hoQVJHazZnPT0iXSwKCiAgICAicnhqcyI6IFsicnhqc0A3LjguMiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi4xLjAiIH0gfSwgInNoYTUxMi1kaEtmOTAzVS9QUVpZNmJvTk50QUdkV2JHODVXQWJqVC8xeFlvWklDN0ZBWTB5V2FwT0JRVnNWckRsNThXODYvL2UxVnBNTkJ0UlY0TWFYZmRNeVNGQT09Il0sCgogICAgInNjaGVkdWxlciI6IFsic2NoZWR1bGVyQDAuMjcuMCIsICIiLCB7fSwgInNoYTUxMi1lTnYrV3JWYkt1MWYzdmJZSlQveHRpRjVzeUE1SFBJTXRmOUlnWS9uS2cwc1dxekFVRXZxWS94bTdPY1pjL3FhZkx4L2lPOUZnT21lU0FwNHY1dGkvUT09Il0sCgogICAgInNlbXZlciI6IFsic2VtdmVyQDcuOC4wIiwgIiIsIHsgImJpbiI6IHsgInNlbXZlciI6ICJiaW4vc2VtdmVyLmpzIiB9IH0sICJzaGE1MTItQWNNN2RWLzV1bDRFZWtvUTI5QWdtNXZyaThKTnFSeWozOW8wcXBYNnZERjJHWnJ0dXRabDVSd2dEMVhuWmppVEFmbmNzSmhNSTQ4UVFIM3NOODdZTkE9PSJdLAoKICAgICJzaGFycCI6IFsic2hhcnBAMC4zNC41IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBpbWcvY29sb3VyIjogIl4xLjAuMCIsICJkZXRlY3QtbGliYyI6ICJeMi4xLjIiLCAic2VtdmVyIjogIl43LjcuMyIgfSwgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1kYXJ3aW4tYXJtNjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtZGFyd2luLXg2NCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC1saWJ2aXBzLWRhcndpbi1hcm02NCI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpYnZpcHMtZGFyd2luLXg2NCI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgtYXJtIjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm02NCI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgtcHBjNjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXJpc2N2NjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXMzOTB4IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4bXVzbC1hcm02NCI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXhtdXNsLXg2NCI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpbnV4LWFybSI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC1saW51eC1hcm02NCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC1saW51eC1wcGM2NCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC1saW51eC1yaXNjdjY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLWxpbnV4LXMzOTB4IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLWxpbnV4LXg2NCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC1saW51eG11c2wtYXJtNjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXhtdXNsLXg2NCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC13YXNtMzIiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtd2luMzItYXJtNjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtd2luMzItaWEzMiI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC13aW4zMi14NjQiOiAiMC4zNC41IiB9IH0sICJzaGE1MTItT3U5STVGdDlXTmNDYlhyVTljTWdQQmNDSzhMaXdMcWNieXdXM3Q0b0RWMzduMXB6cHVOTHNZaUFWOGVPRG5qYnRRbFNEd1oyY1VFZVF6NEU1NEhsdGc9PSJdLAoKICAgICJzaGVsbC1xdW90ZSI6IFsic2hlbGwtcXVvdGVAMS44LjMiLCAiIiwge30sICJzaGE1MTItT2JtbklGNGhYTmcxQnFobkhtZ2JERVRGOGRMUENnZ1pXQmprUWZoWnBic3pabll1cjVEVWxqVGNDSGlpNUxDM0o1RTB5ZU8vMUxJTXlIK1V2SFFneXc9PSJdLAoKICAgICJzaWdpbmZvIjogWyJzaWdpbmZvQDIuMC4wIiwgIiIsIHt9LCAic2hhNTEyLXlieDBXTzEvOGJTQkxFV1hadkVkN2dNVzNTbjNKRmxXM1R2WDFuUkViRExSTlFOYWVOTjhXSzBtZUJ3UGRBYU9JN1R0UlJSSm4vRXMxemhyckNIdTdnPT0iXSwKCiAgICAic291cmNlLW1hcCI6IFsic291cmNlLW1hcEAwLjYuMSIsICIiLCB7fSwgInNoYTUxMi1VamdhcHVtV2xiTWhrQmd6VDdZa2M1WVhVVDQ2RjBpS3U4U0dYcTBiY3dQNWR6L2gwUGxqNmVuSnFqejFaYnEybDVXYXFZbnJWYndXT1dNeUYzRjQ3Zz09Il0sCgogICAgInNvdXJjZS1tYXAtanMiOiBbInNvdXJjZS1tYXAtanNAMS4yLjEiLCAiIiwge30sICJzaGE1MTItVVhXTUtoTE93VktiNzI4SVV0UVBYeGZZVSt1c2R5YnRVcksvOHVHRThDUU12cmhPcHd2ekRCd2owUWhTTDdNUWM3dklzSVNCRzhWUTgrSURReHBmUUE9PSJdLAoKICAgICJzb3VyY2UtbWFwLXN1cHBvcnQiOiBbInNvdXJjZS1tYXAtc3VwcG9ydEAwLjUuMjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiYnVmZmVyLWZyb20iOiAiXjEuMC4wIiwgInNvdXJjZS1tYXAiOiAiXjAuNi4wIiB9IH0sICJzaGE1MTItdUJIVTNMM2N6c0l5WVhLWDg4ZmRyR292eGRTQ29UR0RSWjZTWVh0U1J4TFpVekhnNVAvNjZIdDZ1b1VsSHU5RVpvZCtpblhoS28zcVFnd1hVVC95MXc9PSJdLAoKICAgICJzdGFja2JhY2siOiBbInN0YWNrYmFja0AwLjAuMiIsICIiLCB7fSwgInNoYTUxMi0xWE1KRTVmUW8xakdINlkvN2VibndQT0JFa0lFblQ0UUYzMmQ1UjErVlhkWHZlTTBJQk1KdDh6ZmF4WDFQM1FoVndyWWUrNTc2K2prQU50U1MybUJidz09Il0sCgogICAgInN0ZC1lbnYiOiBbInN0ZC1lbnZANC4xLjAiLCAiIiwge30sICJzaGE1MTItUnE3eWJjWDJSdUM1NXI5b2FQVkVXNy94dTN0ajh1NEdlQllIQldDeWNoRnR6TUlyODZBN2UzUFBFQlBUMzdzSFN0S1gzK1RpWC9Gci9BQ21KTFZsTFE9PSJdLAoKICAgICJzdHJpbmctd2lkdGgiOiBbInN0cmluZy13aWR0aEA0LjIuMyIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJlbW9qaS1yZWdleCI6ICJeOC4wLjAiLCAiaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQiOiAiXjMuMC4wIiwgInN0cmlwLWFuc2kiOiAiXjYuMC4xIiB9IH0sICJzaGE1MTItd0t5UVJRcGpKMHNJcDYyRXJTWmRHc2pNSldzYXA1b1JOaWhIaHU2RzdKVk8vOWpJQjZVeWV2TCt0WHVPcXJuZzhqL2N4S1RXeVdVd3ZTVHJpaVp6L2c9PSJdLAoKICAgICJzdHJpcC1hbnNpIjogWyJzdHJpcC1hbnNpQDYuMC4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImFuc2ktcmVnZXgiOiAiXjUuMC4xIiB9IH0sICJzaGE1MTItWTM4VlBTSGNxa0ZyQ3BGblE5dnVTWG1xdXV2NW9YT0twR2VUNmFHcnIzbzNHYzlBbFZhNkpCZlVTT0NuYnhHR1pGKy8wb29JN0tyUHVVU3p0VWRVNUE9PSJdLAoKICAgICJzdHlsZWQtanN4IjogWyJzdHlsZWQtanN4QDUuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImNsaWVudC1vbmx5IjogIjAuMC4xIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgInJlYWN0IjogIj49IDE2LjguMCB8fCAxNy54LnggfHwgXjE4LjAuMC0wIHx8IF4xOS4wLjAtMCIgfSB9LCAic2hhNTEyLXFTVnlEVGVNb3RkdlFZb0hXTE5Hd1JGSkhDK2krWnZkQlJZb3NPRmdDK1dnMXZ4NGZyTjIvUkcvTkE3U1lxcXZLTkxmMzlQMkxTUkEycHU2bjBYWVpBPT0iXSwKCiAgICAic3VwcG9ydHMtY29sb3IiOiBbInN1cHBvcnRzLWNvbG9yQDguMS4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImhhcy1mbGFnIjogIl40LjAuMCIgfSB9LCAic2hhNTEyLU1wVUVOMk9vZHRVenh2S1FsNzJjVUY3UlE1RWlIc0d2U3NWRzBpYTljNVJiV0dMMkNJNEM3RXBQUzhVVEJJcGxubHpaaU51VjU2dytGdU54eTN0eTJRPT0iXSwKCiAgICAidGFpbHdpbmQtbWVyZ2UiOiBbInRhaWx3aW5kLW1lcmdlQDMuNi4wIiwgIiIsIHt9LCAic2hhNTEyLXV4TDdxQVZRcmlxUlFQQXlLM3BqNjZWcXNrV3FvWjM3UFc5NGp3T1R3TmZxL3o5b3l1MVYrZXFyWnF0UjIrZkNpWGRZT1plL01vZHQ4R3R2cU56dSt3PT0iXSwKCiAgICAidGFpbHdpbmRjc3MiOiBbInRhaWx3aW5kY3NzQDQuMy4wIiwgIiIsIHt9LCAic2hhNTEyLXk2bnhNR0Ixbk1XOVI2azk2ZTVnZElGemNmTC9nVEpSTmFxR2VzMVl2a0xuUFZYeldnYnFGRjJ5TEMwVDhHNzc0bjI0Y3gzUGU4WHJLb25pQ09BSCtRPT0iXSwKCiAgICAidGFwYWJsZSI6IFsidGFwYWJsZUAyLjMuMyIsICIiLCB7fSwgInNoYTUxMi11eGMvenBxRmc2eDdDOHZPRTdsaDZMYmRhOGVFTDl6bVZtL1BMZVRQQlJoaDF4Q2dkV2FRK0oxQ1VpZUdwSWZtMkhkdHNVcFJ2K0hzaGlhc0JNY2M2QT09Il0sCgogICAgInRlcnNlciI6IFsidGVyc2VyQDUuMTYuOSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAanJpZGdld2VsbC9zb3VyY2UtbWFwIjogIl4wLjMuMiIsICJhY29ybiI6ICJeOC41LjAiLCAiY29tbWFuZGVyIjogIl4yLjIwLjAiLCAic291cmNlLW1hcC1zdXBwb3J0IjogIn4wLjUuMjAiIH0sICJiaW4iOiB7ICJ0ZXJzZXIiOiAiYmluL3RlcnNlciIgfSB9LCAic2hhNTEyLUhQYS9GZFRCOVhHSTJIMS9rZUxGWkh4bDZXTnZBSTRZYWxIR3REUVRsTW5KY29xU2FiMVV3TDRsMWhHRWhzNi9HbUxIQlpJZy9ZZ0IrK2pjYnpvT0VnPT0iXSwKCiAgICAidGlueWJlbmNoIjogWyJ0aW55YmVuY2hAMi45LjAiLCAiIiwge30sICJzaGE1MTItMCtEVXZxV01WYWxMbWhhNmxyNGtEOGlBTUsxSHpWMC9hS25DdFdiOXY5NjQxVG5QL01GYjdQYzJieG94UWpUWEFFcnJ5WFZnVU9mdjJZcU5sbHFHZWc9PSJdLAoKICAgICJ0aW55ZXhlYyI6IFsidGlueWV4ZWNAMS4xLjIiLCAiIiwge30sICJzaGE1MTItZEFxU3FFL1JhYnBCS0k4K2gyNkdmTHE2VmIzSlZYczMwWFlRamRNamFqL2MydFM4SVlZTWJJelA1OTlLdFJqN2M1Ny93WUFwYjNRamdSZ1htckN1a0E9PSJdLAoKICAgICJ0aW55Z2xvYmJ5IjogWyJ0aW55Z2xvYmJ5QDAuMi4xNiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJmZGlyIjogIl42LjUuMCIsICJwaWNvbWF0Y2giOiAiXjQuMC40IiB9IH0sICJzaGE1MTItcG45OVZob0FDWVI4bkZIaHhxaXgrdXZzYlhpbmVBYXNXbTVvalhvTjh4RXdLNUtkMy9UcmhObjF3Qnl1RDUyVXhXUkx5OHB1K2tSTW5pRWk2RXE5Wmc9PSJdLAoKICAgICJ0aW55cmFpbmJvdyI6IFsidGlueXJhaW5ib3dAMy4xLjAiLCAiIiwge30sICJzaGE1MTItQmYrSUxtQmdyZXRVcmRKeHpYTTBTZ1hMWjNYZmlhVXVPai9JS1FIdVRYaXArMDVYbit1eUVZZFZnMGtZRGlwVEJjTHJDVnlVekFQejdRbUFyYjBtbXc9PSJdLAoKICAgICJ0cmVlLWtpbGwiOiBbInRyZWUta2lsbEAxLjIuMiIsICIiLCB7ICJiaW4iOiB7ICJ0cmVlLWtpbGwiOiAiY2xpLmpzIiB9IH0sICJzaGE1MTItTDBPcnBpOHFHcFJHLy9OZCtIOTB2RkIrM2lIbnVlMXpTU0dtTk9PQ2gxR0xKN3JVS1Z3VjJIdmlqcGhHUVMyVW1oVVpld1M5Vmd2eFlJZGdyK2ZHMUE9PSJdLAoKICAgICJ0c2xpYiI6IFsidHNsaWJAMi44LjEiLCAiIiwge30sICJzaGE1MTItb0pGdTk0SFFiK0tWZHVTVVFMN3ducG1xbmZtTHNPQS9uQWg2YjZFSDB3Q0VvSzAvbVBlWFU2YzN3S0RWODNNa091SFBSSHRTWEtLVTk5SUJhelMvMnc9PSJdLAoKICAgICJ0eXBlc2NyaXB0IjogWyJ0eXBlc2NyaXB0QDUuOS4zIiwgIiIsIHsgImJpbiI6IHsgInRzYyI6ICJiaW4vdHNjIiwgInRzc2VydmVyIjogImJpbi90c3NlcnZlciIgfSB9LCAic2hhNTEyLWpsMXZaelBEaW5McjllVXQzSi90N1Y2RmdORXc5UWp2QlBkeXN6OUtmUURENDFmUXJDMlk0dktRZGlhVXBGVDRiWGxiMVJIaExwcDh3dG02TTVUZ1N3PT0iXSwKCiAgICAidW5kaWNpLXR5cGVzIjogWyJ1bmRpY2ktdHlwZXNANi4yMS4wIiwgIiIsIHt9LCAic2hhNTEyLWl3RFpxZzBRQUdyZzlSYXY1SDRuME02NGMzbWtSNTljSjZ3UXArN0M0bkkwZ3NtRXhhZWRhWUxOTzQ0ZVQ0QXRCQndqYlRpR1BNbHQyTWQwVDlIOUpRPT0iXSwKCiAgICAidXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUiOiBbInVzZS1zeW5jLWV4dGVybmFsLXN0b3JlQDEuNi4wIiwgIiIsIHsgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJyZWFjdCI6ICJeMTYuOC4wIHx8IF4xNy4wLjAgfHwgXjE4LjAuMCB8fCBeMTkuMC4wIiB9IH0sICJzaGE1MTItUHA2R1N3R1AvTnJQSXJ4VkZBSWtPUWV5dzhsRmVuT0hpalFXa1VUckR2ckY0QUxxeWxQMkMvS0NrZVM5ZHBVTTNLdllSUWhuYTV2dDdJTDk1K1pROXc9PSJdLAoKICAgICJ2aXRlIjogWyJ2aXRlQDguMC4xNCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJsaWdodG5pbmdjc3MiOiAiXjEuMzIuMCIsICJwaWNvbWF0Y2giOiAiXjQuMC40IiwgInBvc3Rjc3MiOiAiXjguNS4xNSIsICJyb2xsZG93biI6ICIxLjAuMiIsICJ0aW55Z2xvYmJ5IjogIl4wLjIuMTYiIH0sICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgImZzZXZlbnRzIjogIn4yLjMuMyIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJAdHlwZXMvbm9kZSI6ICJeMjAuMTkuMCB8fCA+PTIyLjEyLjAiLCAiQHZpdGVqcy9kZXZ0b29scyI6ICJeMC4xLjE4IiwgImVzYnVpbGQiOiAiXjAuMjcuMCB8fCBeMC4yOC4wIiwgImppdGkiOiAiPj0xLjIxLjAiLCAibGVzcyI6ICJeNC4wLjAiLCAic2FzcyI6ICJeMS43MC4wIiwgInNhc3MtZW1iZWRkZWQiOiAiXjEuNzAuMCIsICJzdHlsdXMiOiAiPj0wLjU0LjgiLCAic3VnYXJzcyI6ICJeNS4wLjAiLCAidGVyc2VyIjogIl41LjE2LjAiLCAidHN4IjogIl40LjguMSIsICJ5YW1sIjogIl4yLjQuMiIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkB0eXBlcy9ub2RlIiwgIkB2aXRlanMvZGV2dG9vbHMiLCAiZXNidWlsZCIsICJqaXRpIiwgImxlc3MiLCAic2FzcyIsICJzYXNzLWVtYmVkZGVkIiwgInN0eWx1cyIsICJzdWdhcnNzIiwgInRlcnNlciIsICJ0c3giLCAieWFtbCJdLCAiYmluIjogeyAidml0ZSI6ICJiaW4vdml0ZS5qcyIgfSB9LCAic2hhNTEyLXM0QkpKKzV5MXBZTDZPdHc1MUZIaFZKUWhQbnVSaW5LaWc2NGcvMStFVU5hSnNkM2dDS2REMzFJUEZ2c3dVZ1c5LzYwUVQ5b0ZIYlpIYlFLNWltY3h3PT0iXSwKCiAgICAidml0ZXN0IjogWyJ2aXRlc3RANC4xLjciLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHZpdGVzdC9leHBlY3QiOiAiNC4xLjciLCAiQHZpdGVzdC9tb2NrZXIiOiAiNC4xLjciLCAiQHZpdGVzdC9wcmV0dHktZm9ybWF0IjogIjQuMS43IiwgIkB2aXRlc3QvcnVubmVyIjogIjQuMS43IiwgIkB2aXRlc3Qvc25hcHNob3QiOiAiNC4xLjciLCAiQHZpdGVzdC9zcHkiOiAiNC4xLjciLCAiQHZpdGVzdC91dGlscyI6ICI0LjEuNyIsICJlcy1tb2R1bGUtbGV4ZXIiOiAiXjIuMC4wIiwgImV4cGVjdC10eXBlIjogIl4xLjMuMCIsICJtYWdpYy1zdHJpbmciOiAiXjAuMzAuMjEiLCAib2J1ZyI6ICJeMi4xLjEiLCAicGF0aGUiOiAiXjIuMC4zIiwgInBpY29tYXRjaCI6ICJeNC4wLjMiLCAic3RkLWVudiI6ICJeNC4wLjAtcmMuMSIsICJ0aW55YmVuY2giOiAiXjIuOS4wIiwgInRpbnlleGVjIjogIl4xLjAuMiIsICJ0aW55Z2xvYmJ5IjogIl4wLjIuMTUiLCAidGlueXJhaW5ib3ciOiAiXjMuMS4wIiwgInZpdGUiOiAiXjYuMC4wIHx8IF43LjAuMCB8fCBeOC4wLjAiLCAid2h5LWlzLW5vZGUtcnVubmluZyI6ICJeMi4zLjAiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQGVkZ2UtcnVudGltZS92bSI6ICIqIiwgIkBvcGVudGVsZW1ldHJ5L2FwaSI6ICJeMS45LjAiLCAiQHR5cGVzL25vZGUiOiAiXjIwLjAuMCB8fCBeMjIuMC4wIHx8ID49MjQuMC4wIiwgIkB2aXRlc3QvYnJvd3Nlci1wbGF5d3JpZ2h0IjogIjQuMS43IiwgIkB2aXRlc3QvYnJvd3Nlci1wcmV2aWV3IjogIjQuMS43IiwgIkB2aXRlc3QvYnJvd3Nlci13ZWJkcml2ZXJpbyI6ICI0LjEuNyIsICJAdml0ZXN0L2NvdmVyYWdlLWlzdGFuYnVsIjogIjQuMS43IiwgIkB2aXRlc3QvY292ZXJhZ2UtdjgiOiAiNC4xLjciLCAiQHZpdGVzdC91aSI6ICI0LjEuNyIsICJoYXBweS1kb20iOiAiKiIsICJqc2RvbSI6ICIqIiB9LCAib3B0aW9uYWxQZWVycyI6IFsiQGVkZ2UtcnVudGltZS92bSIsICJAb3BlbnRlbGVtZXRyeS9hcGkiLCAiQHR5cGVzL25vZGUiLCAiQHZpdGVzdC9icm93c2VyLXBsYXl3cmlnaHQiLCAiQHZpdGVzdC9icm93c2VyLXByZXZpZXciLCAiQHZpdGVzdC9icm93c2VyLXdlYmRyaXZlcmlvIiwgIkB2aXRlc3QvY292ZXJhZ2UtaXN0YW5idWwiLCAiQHZpdGVzdC9jb3ZlcmFnZS12OCIsICJAdml0ZXN0L3VpIiwgImhhcHB5LWRvbSIsICJqc2RvbSJdLCAiYmluIjogeyAidml0ZXN0IjogInZpdGVzdC5tanMiIH0gfSwgInNoYTUxMi1mbFl5YUZkMkNnb0NvVSswVUt0M3B4a3NnQytTMDJpVEROMG4zTHRxYU1lWHNJOVNCY2ROdWpjMmswRGVGTHpVbi8wazUzOHlOak9TZHdnQ3FjcndKQT09Il0sCgogICAgIndoeS1pcy1ub2RlLXJ1bm5pbmciOiBbIndoeS1pcy1ub2RlLXJ1bm5pbmdAMi4zLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAic2lnaW5mbyI6ICJeMi4wLjAiLCAic3RhY2tiYWNrIjogIjAuMC4yIiB9LCAiYmluIjogeyAid2h5LWlzLW5vZGUtcnVubmluZyI6ICJjbGkuanMiIH0gfSwgInNoYTUxMi1oVXJtYVdCZFZEY3h2WXFueWgwOXp1bkt6Uk9XamJaVGlOeThkQkVqa1M3ZWhFRFFpYlhKN1h2bG10Ynd1VGNsVWlJeU4rQ3lYUUQ0Vm1rbzhmTm04dz09Il0sCgogICAgIndyYXAtYW5zaSI6IFsid3JhcC1hbnNpQDcuMC4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImFuc2ktc3R5bGVzIjogIl40LjAuMCIsICJzdHJpbmctd2lkdGgiOiAiXjQuMS4wIiwgInN0cmlwLWFuc2kiOiAiXjYuMC4wIiB9IH0sICJzaGE1MTItWVZHSWoya2FtTFNUeHc2TnNaam9CeGZTd3NuMHljZGVzbWM0cCtRMjFjNXpQdVoxcGwrTmZ4VmR4UHRkSHZtTlZPUTZYU1lHNEFVdHl0L0ZpN0QxNlE9PSJdLAoKICAgICJ5MThuIjogWyJ5MThuQDUuMC44IiwgIiIsIHt9LCAic2hhNTEyLTBwZkZ6ZWdlRFdKSEpJQW1UTFJQMkR3SGpkRjVzN2pvOXR1enRkUXhBaElOQ2R2UyszbkdJTnFQZDAwQXBocUpSLzBMaEFOVVM2Lys3U0NiOThZT2ZBPT0iXSwKCiAgICAieWFtbCI6IFsieWFtbEAyLjkuMCIsICIiLCB7ICJiaW4iOiB7ICJ5YW1sIjogImJpbi5tanMiIH0gfSwgInNoYTUxMi0yQXZoTlgzbWI4emQ2Wnk3SU5UdFNwbDFGMTVIVzZXbnFqMHNyV2xrS0xjcFlsL2dNSU1KaXl1R3EyS2VJMllGeFVQamRsQiszTGMxMHNlTUx0TDRjQT09Il0sCgogICAgInlhcmdzIjogWyJ5YXJnc0AxNy43LjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiY2xpdWkiOiAiXjguMC4xIiwgImVzY2FsYWRlIjogIl4zLjEuMSIsICJnZXQtY2FsbGVyLWZpbGUiOiAiXjIuMC41IiwgInJlcXVpcmUtZGlyZWN0b3J5IjogIl4yLjEuMSIsICJzdHJpbmctd2lkdGgiOiAiXjQuMi4zIiwgInkxOG4iOiAiXjUuMC41IiwgInlhcmdzLXBhcnNlciI6ICJeMjEuMS4xIiB9IH0sICJzaGE1MTItN2RTenpSUSsrQ0tuTkkva3JLbllSVjdKS0tQVVhNRWg2MXNvYUhLZzltcldFaHpGV2hGbnhQeEdsKzY5Y0QxT3U2M0MxM05VUENubUljcnZxQ3VNNnc9PSJdLAoKICAgICJ5YXJncy1wYXJzZXIiOiBbInlhcmdzLXBhcnNlckAyMS4xLjEiLCAiIiwge30sICJzaGE1MTItdFZwc0pXN0RkamVjQWlGcGJJQjFlM3F4SVFzRTZOb1BjNS9lVGRyYmJJQzRoMExWc1dobm9hM2crbTJIY2xCSXVqSHpzeFo0VkpWQStHVXVjMi9MQnc9PSJdLAoKICAgICJ6b2QiOiBbInpvZEA0LjQuMyIsICIiLCB7fSwgInNoYTUxMi15dEVORmpJSkZsMlV3WWdsZGUyamNoVzJId200R0pGTERpU1hXZFRySlFCSU45RmN5cDduNERoeEpFaVdOQUpNVjEvQnFXZlcva2tnNzFVRGNISnlUUT09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS13YXNtMzItd2FzaS9AZW1uYXBpL2NvcmUiOiBbIkBlbW5hcGkvY29yZUAxLjEwLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGVtbmFwaS93YXNpLXRocmVhZHMiOiAiMS4yLjEiLCAidHNsaWIiOiAiXjIuNC4wIiB9LCAiYnVuZGxlZCI6IHRydWUgfSwgInNoYTUxMi15cTZPa0o0cDgyQ0FmUGwwdTltUWViUUhLUEprWTdXckl1azIwNWNUWW5ZZStrMlo4WUJoMTFGcmJSRy9INmloaXJxY2FjT2dsMkJJTzhveU1RTGVYdz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS13YXNtMzItd2FzaS9AZW1uYXBpL3J1bnRpbWUiOiBbIkBlbW5hcGkvcnVudGltZUAxLjEwLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9LCAiYnVuZGxlZCI6IHRydWUgfSwgInNoYTUxMi1ld3ZZbGs4NnhVb0dJMHpRUk5xL21DKzE2UjFRZURsS1F5MjFLaTNvU1lYTmdMYjQ1R1YxUDZBME0rL3M2bnlDdU5EcWU1VnBhWTg0QnpYR3dWYndGQT09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS13YXNtMzItd2FzaS9AZW1uYXBpL3dhc2ktdGhyZWFkcyI6IFsiQGVtbmFwaS93YXNpLXRocmVhZHNAMS4yLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9LCAiYnVuZGxlZCI6IHRydWUgfSwgInNoYTUxMi11VElJN09ZRisvTWVzL01yY0lPWXA1eU90U01MQldTSW9MUHBjZ3dpcG9pS2JsaTZrMzIydGNvRnN4b0lJeFBEcVcwMVNRR0Fna280RXpaaTJCTnYydz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS13YXNtMzItd2FzaS9AbmFwaS1ycy93YXNtLXJ1bnRpbWUiOiBbIkBuYXBpLXJzL3dhc20tcnVudGltZUAxLjEuNCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAdHlieXMvd2FzbS11dGlsIjogIl4wLjEwLjEiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQGVtbmFwaS9jb3JlIjogIl4xLjcuMSIsICJAZW1uYXBpL3J1bnRpbWUiOiAiXjEuNy4xIiB9LCAiYnVuZGxlZCI6IHRydWUgfSwgInNoYTUxMi0zTlFOTmdBMVlTbEpiL2tNSDFpbGRBU1A5SFc3LzdrWW5SSTJzeldKYW9mYVMxaFdtYkdJNEgrZDMrMjJhR3pYWE45SUorbitHaUZWY0dpcEpQMThvdz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS13YXNtMzItd2FzaS9AdHlieXMvd2FzbS11dGlsIjogWyJAdHlieXMvd2FzbS11dGlsQDAuMTAuMiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi40LjAiIH0sICJidW5kbGVkIjogdHJ1ZSB9LCAic2hhNTEyLVJvQnZKMlgwd3VLbFdGSWpyd2ZmR3cxSXFaSEtRcXpJY2hLYWFkWlpmbk5wc0FZcDJtTTBoMzZKdFBDak5EQUhHZ1llei8xNXVNQnBmR3djaGhpTWdnPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLXdhc20zMi13YXNpL3RzbGliIjogWyJ0c2xpYkAyLjguMSIsICIiLCB7ICJidW5kbGVkIjogdHJ1ZSB9LCAic2hhNTEyLW9KRnU5NEhRYitLVmR1U1VRTDd3bnBtcW5mbUxzT0EvbkFoNmI2RUgwd0NFb0swL21QZVhVNmMzd0tEVjgzTWtPdUhQUkh0U1hLS1U5OUlCYXpTLzJ3PT0iXSwKCiAgICAiY2hhbGsvc3VwcG9ydHMtY29sb3IiOiBbInN1cHBvcnRzLWNvbG9yQDcuMi4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImhhcy1mbGFnIjogIl40LjAuMCIgfSB9LCAic2hhNTEyLXFwQ0F2Umw5c3R1T0h2ZUtzbjdIbmNKUnZ2NTAxcUlhY0t6UWxPLytMd3hjOSswcTJ3THl2NERmdnQ4MC9EUG4ycHFPQnNKZERpb2dYR1I5K092d1J3PT0iXSwKCiAgICAibmV4dC9wb3N0Y3NzIjogWyJwb3N0Y3NzQDguNC4zMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJuYW5vaWQiOiAiXjMuMy42IiwgInBpY29jb2xvcnMiOiAiXjEuMC4wIiwgInNvdXJjZS1tYXAtanMiOiAiXjEuMC4yIiB9IH0sICJzaGE1MTItUFMwOElib2lhOW10cy8yeWdWM2VMcFk1Z2huVWNmTFYvRVhUT1cxRTJxWXhKS0dHQlV0TmpONzZGWUhuTXMzNlJtQVJuNDFiQzBBWm1uK3JSME9WcFE9PSJdLAogIH0KfQo=" }, { "path": "metadata.json", "kind": "text", "content": '{\n "id": "bakery",\n "name": "Bakery",\n "tagline": "Warm, food-forward storefront with custom-order forms and same-day delivery checkout.",\n "industry": "food",\n "tags": ["food", "bakery", "pastry"],\n "stability": "stable",\n "schemaType": "Bakery",\n "mock": {\n "seedName": "default",\n "seedBusinessId": "bus_default_akua_bakery"\n }\n}\n' }, { "path": "next.config.ts", "kind": "text", "content": 'import type { NextConfig } from "next";\n\n// Same-origin proxy target for the storefront API. The public key\n// decides: a real `cpk_live_\u2026` / `cpk_test_\u2026` only resolves against\n// hosted Cimplify, so browser cart writes go to the same place the\n// server catalogue reads come from. Anything else (`mock-dev`, empty)\n// falls back to the local `cimplify dev` mock in dev.\nconst publicKey = process.env.NEXT_PUBLIC_CIMPLIFY_PUBLIC_KEY?.trim() ?? "";\nconst keyTargetsHostedCimplify =\n publicKey.startsWith("cpk_live_") || publicKey.startsWith("cpk_test_");\nconst STOREFRONT_URL =\n process.env.NODE_ENV === "production" || keyTargetsHostedCimplify\n ? "https://storefronts.cimplify.io"\n : "http://127.0.0.1:8787";\n\nif (STOREFRONT_URL === "http://127.0.0.1:8787") {\n console.warn(\n "[cimplify] next.config resolved the local storefront API URL; production deploys must run with NODE_ENV=production.",\n );\n}\n\n// Cache Components (\'use cache\' + cacheTag/cacheLife) require Node-specific\n// setTimeout atomicity and serialize a postponed state that routinely exceeds\n// CF Workers\' 128MB zlib limit. We\'re on Cloudflare Workers via opennext, so\n// we stay on Next 16\'s "Previous Model" \u2014 `fetch.next.{revalidate,tags}` via\n// the SDK\'s `cacheOptions`, plus `export const revalidate` per page. See\n// https://nextjs.org/docs/app/guides/caching-without-cache-components.\nconst nextConfig: NextConfig = {\n async redirects() {\n return [\n { source: "/login", destination: "/account", permanent: false },\n { source: "/signup", destination: "/account", permanent: false },\n ];\n },\n async rewrites() {\n return [\n { source: "/api/v1/:path*", destination: `${STOREFRONT_URL}/api/v1/:path*` },\n { source: "/img/:path*", destination: `${STOREFRONT_URL}/img/:path*` },\n { source: "/elements/:path*", destination: `${STOREFRONT_URL}/elements/:path*` },\n { source: "/_mock/:path*", destination: `${STOREFRONT_URL}/_mock/:path*` },\n ];\n },\n images: {\n loader: "custom",\n loaderFile: "./lib/cimplify-loader.ts",\n remotePatterns: [\n { protocol: "http", hostname: "127.0.0.1", port: "8787", pathname: "/img/**" },\n { protocol: "http", hostname: "localhost", port: "8787", pathname: "/img/**" },\n { protocol: "http", hostname: "localhost", port: "3000", pathname: "/img/**" },\n { protocol: "https", hostname: "loremflickr.com", pathname: "/**" },\n { protocol: "https", hostname: "images.unsplash.com", pathname: "/**" },\n { protocol: "https", hostname: "static-tmp.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "storefrontassetscdn.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "cdn.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "res.cloudinary.com", pathname: "/cimplify/**" },\n ],\n },\n};\n\nexport default nextConfig;\n' }, { "path": "CLAUDE.md", "kind": "text", "content": "# CLAUDE.md\n\nThis project was scaffolded from a Cimplify storefront template (`cimplify init`).\n\n## Read these first\n\n- **`AGENTS.md`** at the project root \u2014 the file \u2194 `brand.X` field map for *this template's* industry, plus the architectural rules.\n- **`.claude/skills/cimplify-storefront/SKILL.md`** \u2014 the playbook for common tasks (rebrand, add a section, wire a Server Action, deploy, eject a component). Invoke it whenever you're asked to change content, palette, copy, or routing.\n\n## The two-line summary\n\n1. **Edit `lib/brand.ts`** for any visible string.\n2. **Edit `app/globals.css` `@theme` block** for any palette / radius / font change.\n\nThat covers ~95% of what merchants ask for. For anything else, follow the `cimplify-storefront` skill.\n\n## Don't do\n\n- Hardcode strings in pages or components.\n- Enable `cacheComponents: true` in `next.config.ts` \u2014 we're on Cloudflare Workers, where `'use cache'` postponed state blows past CF's 128MB zlib limit. This template stays on Next 16's \"Previous Model\" (ISR): `export const revalidate` per page + `cacheOptions: { revalidate, tags }` on SDK reads.\n- Add `'use cache'`, `cacheTag`, or `cacheLife` anywhere. Use the SDK's `cacheOptions` instead.\n- Use `unstable_cache` \u2014 it's gone in Next 16. Use SDK `cacheOptions` or `fetch.next.{revalidate,tags}`.\n- Run `bun test` (Bun's `vi` shim is incomplete) \u2014 use `bun run test:run`.\n" }, { "path": "app/about/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `About \u2014 ${brand.name}`,\n description: brand.description,\n};\n\nexport default function AboutPage() {\n const a = brand.about;\n const titleParts = a.title.split("\\n");\n return (\n <article className="max-w-3xl mx-auto px-6 sm:px-8 py-16">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2">\n {a.eyebrow}\n </p>\n <h1 className="font-serif text-[clamp(2.25rem,5vw,3.5rem)] font-semibold mb-6 -tracking-[0.02em]">\n {titleParts.map((line, i) => (\n <span key={i}>\n {line}\n {i < titleParts.length - 1 && <br />}\n </span>\n ))}\n </h1>\n <div className="prose prose-lg max-w-none space-y-5 text-foreground/90 leading-relaxed">\n {a.paragraphs.map((p, i) => (\n <p key={i}>{p}</p>\n ))}\n {a.sections.map((s) => (\n <div key={s.heading}>\n <h2 className="font-serif text-3xl font-semibold mt-10 mb-3">{s.heading}</h2>\n <p>{s.body}</p>\n </div>\n ))}\n </div>\n </article>\n );\n}\n' }, { "path": "app/llms.txt/route.ts", "kind": "text", "content": 'import { getServerClient, tags, type Product } from "@cimplify/sdk/server";\nimport { brand } from "@/lib/brand";\nimport { getSiteUrl } from "@/lib/site-url";\n\nexport const revalidate = 3600;\n\nasync function buildLlmsTxt(SITE_URL: string): Promise<string> {\n const client = getServerClient();\n const [productsRes, categoriesRes, collectionsRes] = await Promise.all([\n client.catalogue.getProducts(\n { limit: 500 },\n { cacheOptions: { revalidate: 3600, tags: [tags.products()] } },\n ),\n client.catalogue.getCategories({\n cacheOptions: { revalidate: 3600, tags: [tags.categories()] },\n }),\n client.catalogue.getCollections({\n cacheOptions: { revalidate: 3600, tags: [tags.collections()] },\n }),\n ]);\n\n const products: Product[] = productsRes.ok ? productsRes.value.items : [];\n const categories = categoriesRes.ok ? categoriesRes.value : [];\n const collections = collectionsRes.ok ? collectionsRes.value : [];\n\n const lines: string[] = [];\n lines.push(`# ${brand.name}`);\n lines.push("");\n lines.push(`> ${brand.llms.summary}`);\n lines.push("");\n lines.push("## Browse");\n lines.push(`- [Home](${SITE_URL}/)`);\n lines.push(`- [Shop](${SITE_URL}/shop): Full menu with filter and sort.`);\n\n if (categories.length > 0) {\n lines.push("");\n lines.push("## Categories");\n for (const c of categories) {\n lines.push(\n `- [${c.name}](${SITE_URL}/categories/${c.slug})${c.description ? `: ${c.description}` : ""}`,\n );\n }\n }\n\n if (collections.length > 0) {\n lines.push("");\n lines.push("## Collections");\n for (const c of collections) {\n lines.push(\n `- [${c.name}](${SITE_URL}/collections/${c.slug})${c.description ? `: ${c.description}` : ""}`,\n );\n }\n }\n\n if (products.length > 0) {\n lines.push("");\n lines.push("## Products");\n for (const p of products) {\n const slug = p.slug ?? p.id;\n const price = `${brand.currency} ${p.default_price}`;\n const desc = p.description ? ` \u2014 ${p.description.replace(/\\s+/g, " ").slice(0, 200)}` : "";\n lines.push(`- [${p.name}](${SITE_URL}/shop?product=${slug}) (${price})${desc}`);\n }\n }\n\n lines.push("");\n lines.push("## Information");\n lines.push(`- [About](${SITE_URL}/about)`);\n lines.push(`- [FAQ](${SITE_URL}/faq)`);\n lines.push(`- [Terms of Service](${SITE_URL}/terms)`);\n lines.push(`- [Privacy Policy](${SITE_URL}/privacy)`);\n lines.push(`- [Sitemap (XML)](${SITE_URL}/sitemap.xml)`);\n lines.push("");\n lines.push("## Contact");\n lines.push(`- Email: ${brand.contact.email}`);\n lines.push(`- Phone: ${brand.contact.phone}`);\n lines.push(`- Address: ${brand.contact.address}`);\n\n return lines.join("\\n") + "\\n";\n}\n\n/**\n * `/llms.txt` \u2014 machine-readable site index for LLMs (per llmstxt.org).\n * Lets coding agents and chat assistants find products, categories, and\n * support pages without scraping HTML. Plain Markdown so it streams cheaply\n * into context windows.\n */\nexport async function GET(): Promise<Response> {\n const body = await buildLlmsTxt(await getSiteUrl());\n return new Response(body, {\n headers: {\n "Content-Type": "text/plain; charset=utf-8",\n "Cache-Control": "public, max-age=0, s-maxage=3600, stale-while-revalidate=86400",\n },\n });\n}\n' }, { "path": "app/contact/contact-form.tsx", "kind": "text", "content": `"use client";
|
|
2980
2980
|
|
|
2981
2981
|
import { useState } from "react";
|
|
2982
2982
|
|
|
@@ -3085,7 +3085,7 @@ function Field({
|
|
|
3085
3085
|
</div>
|
|
3086
3086
|
);
|
|
3087
3087
|
}
|
|
3088
|
-
` }, { "path": "app/contact/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { ContactForm } from "./contact-form";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `Contact \u2014 ${brand.name}`,\n description: brand.contactPage.body,\n};\n\nexport default function ContactPage() {\n const c = brand.contactPage;\n return (\n <article className="max-w-5xl mx-auto px-6 sm:px-8 py-16">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2">\n {c.eyebrow}\n </p>\n <h1 className="font-serif text-[clamp(2.25rem,5vw,3.5rem)] font-semibold mb-4 -tracking-[0.02em]">\n {c.title}\n </h1>\n <p className="text-lg text-muted-foreground max-w-2xl mb-12 leading-relaxed">{c.body}</p>\n\n <div className="grid grid-cols-1 lg:grid-cols-[1.5fr_1fr] gap-10 items-start">\n <ContactForm reasons={c.reasons} />\n <aside className="space-y-5 lg:pl-10 lg:border-l border-border">\n <div>\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-muted-foreground mb-3">\n Direct lines\n </p>\n <ul className="space-y-3 list-none p-0 m-0">\n {c.directLines.map((line) => (\n <li key={line.label}>\n <p className="text-xs text-muted-foreground m-0">{line.label}</p>\n <a\n href={line.href}\n className="text-foreground hover:text-primary transition-colors"\n >\n {line.value}\n </a>\n </li>\n ))}\n </ul>\n </div>\n <div>\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-muted-foreground mb-3">\n Visit\n </p>\n <p className="text-foreground m-0">{brand.contact.address}</p>\n <p className="text-xs text-muted-foreground mt-1">{brand.contact.hours}</p>\n </div>\n </aside>\n </div>\n </article>\n );\n}\n' }, { "path": "app/globals.css", "kind": "text", "content": '@import "tailwindcss";\n\n/* Scan the SDK\'s bundled JS so utility classes used inside its components\n land in the compiled stylesheet alongside our own. */\n@source "../node_modules/@cimplify/sdk/dist";\n\n/* The SDK declares its design tokens with `@theme reference`, meaning the\n consumer must supply the actual values. Warm bakery palette below \u2014 swap\n these to retheme the entire SDK + storefront in one place. */\n@theme {\n --color-background: oklch(0.985 0.007 80);\n --color-foreground: oklch(0.18 0.01 60);\n --color-card: oklch(1 0 0);\n --color-card-foreground: oklch(0.18 0.01 60);\n --color-popover: oklch(1 0 0);\n --color-popover-foreground: oklch(0.18 0.01 60);\n --color-primary: oklch(0.45 0.16 40);\n --color-primary-foreground: oklch(0.99 0 0);\n --color-secondary: oklch(0.95 0.02 80);\n --color-secondary-foreground: oklch(0.25 0.04 50);\n --color-muted: oklch(0.96 0.01 80);\n --color-muted-foreground: oklch(0.5 0.02 60);\n --color-accent: oklch(0.92 0.05 70);\n --color-accent-foreground: oklch(0.3 0.06 40);\n --color-destructive: oklch(0.58 0.24 27);\n --color-destructive-foreground: oklch(0.99 0 0);\n --color-border: oklch(0.9 0.02 80);\n --color-input: oklch(0.92 0.02 80);\n --color-ring: oklch(0.6 0.1 40);\n --radius: 0.75rem;\n}\n\n@layer base {\n html, body {\n margin: 0;\n padding: 0;\n background: var(--color-background);\n color: var(--color-foreground);\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n a { color: inherit; text-decoration: none; }\n h1, h2, h3, h4 {\n font-family: var(--font-serif);\n letter-spacing: -0.01em;\n }\n}\n' }, { "path": "app/categories/[slug]/listing-client.tsx", "kind": "text", "content": '"use client";\n\nimport { ProductGrid } from "@cimplify/sdk/react";\nimport type { Product } from "@cimplify/sdk";\nimport { StoreProductCard } from "@/components/store-product-card";\n\n/**\n * Client island for the category listing. Receives server-fetched products\n * as props (serializable) and owns the `renderCard` function.\n */\nexport function ListingClient({ products }: { products: Product[] }) {\n return (\n <ProductGrid\n products={products}\n emptyMessage="No products in this category yet."\n renderCard={(p) => <StoreProductCard product={p} />}\n />\n );\n}\n' }, { "path": "app/categories/[slug]/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { Suspense } from "react";\nimport Link from "next/link";\nimport { notFound } from "next/navigation";\nimport {\n getServerClient,\n tags,\n type Category,\n type Product,\n} from "@cimplify/sdk/server";\nimport { ListingClient } from "./listing-client";\nimport { brand } from "@/lib/brand";\n\n// See app/products/[slug]/page.tsx for the rationale on generateStaticParams.\nexport async function generateStaticParams() {\n const r = await getServerClient().catalogue.getCategories();\n if (!r.ok || r.value.length === 0) {\n return [{ slug: "__placeholder__" }];\n }\n return r.value.map((c) => ({ slug: c.slug ?? c.id }));\n}\n\nexport const revalidate = 3600;\n\ninterface CategoryData {\n category: Category;\n products: Product[];\n}\n\ntype CategoryResult =\n | { ok: true; data: CategoryData }\n | { ok: false; code: string };\n\nasync function getCategory(slug: string): Promise<CategoryResult> {\n const client = getServerClient();\n const catRes = await client.catalogue.getCategoryBySlug(slug, {\n cacheOptions: { revalidate: 3600, tags: [tags.categories()] },\n });\n if (!catRes.ok) return { ok: false, code: catRes.error.code };\n\n const r = await client.catalogue.getCategoryProducts(catRes.value.id, undefined, {\n cacheOptions: {\n revalidate: 3600,\n tags: [\n tags.category(catRes.value.id),\n tags.categoryProducts(catRes.value.id),\n ],\n },\n });\n const products = r.ok\n ? ((r.value as { items?: Product[] }).items ?? (r.value as Product[]))\n : [];\n return { ok: true, data: { category: catRes.value, products } };\n}\n\nexport async function generateMetadata({\n params,\n}: {\n params: Promise<{ slug: string }>;\n}): Promise<Metadata> {\n const { slug } = await params;\n const result = await getCategory(slug);\n if (!result.ok) return {};\n const data = result.data;\n return {\n title: `${data.category.name} \u2014 ${brand.name}`,\n description: data.category.description ?? undefined,\n };\n}\n\nexport default async function CategoryPage({\n params,\n}: {\n params: Promise<{ slug: string }>;\n}) {\n return (\n <Suspense fallback={<CategorySkeleton />}>\n <CategoryContent params={params} />\n </Suspense>\n );\n}\n\nasync function CategoryContent({\n params,\n}: {\n params: Promise<{ slug: string }>;\n}) {\n const { slug } = await params;\n const result = await getCategory(slug);\n if (!result.ok) {\n if (result.code === "NOT_FOUND") notFound();\n return <CategorySkeleton />;\n }\n const { category, products } = result.data;\n return (\n <section className="max-w-7xl mx-auto px-6 sm:px-8 pt-12">\n <header className="mb-8 text-center">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2">\n Category\n </p>\n <h1 className="font-serif text-[clamp(2rem,4vw,2.75rem)] font-semibold mb-2">\n {category.name}\n </h1>\n {category.description && (\n <p className="mx-auto mb-2 max-w-xl text-muted-foreground">\n {category.description}\n </p>\n )}\n <p className="text-sm text-muted-foreground">\n {products.length} item{products.length === 1 ? "" : "s"}\n </p>\n </header>\n <ListingClient products={products} />\n {products.length === 0 && (\n <p className="text-center mt-8">\n <Link href="/" className="text-primary font-semibold">\n \u2190 Back home\n </Link>\n </p>\n )}\n </section>\n );\n}\n\nfunction CategorySkeleton() {\n return (\n <section className="max-w-7xl mx-auto px-6 sm:px-8 pt-12">\n <header className="mb-8 text-center">\n <div className="mx-auto h-3 w-20 bg-muted rounded mb-2 animate-pulse" />\n <div className="mx-auto h-10 w-64 bg-muted rounded mb-2 animate-pulse" />\n <div className="mx-auto h-4 w-80 bg-muted rounded animate-pulse" />\n </header>\n <div className="grid grid-cols-2 md:grid-cols-3 gap-4">\n {Array.from({ length: 6 }).map((_, i) => (\n <div key={i} className="aspect-square bg-muted rounded-2xl animate-pulse" />\n ))}\n </div>\n </section>\n );\n}\n' }, { "path": "app/privacy/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `Privacy Policy \u2014 ${brand.name}`,\n description: `How ${brand.name} collects, uses, and protects your personal data.`,\n};\n\nexport default function PrivacyPage() {\n const p = brand.privacy;\n return (\n <article className="max-w-3xl mx-auto px-6 sm:px-8 py-16 prose prose-lg max-w-none">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2 not-prose">\n {p.eyebrow}\n </p>\n <h1 className="font-serif text-[clamp(2.25rem,5vw,3.5rem)] font-semibold mb-2 -tracking-[0.02em]">\n {p.title}\n </h1>\n <p className="text-sm text-muted-foreground not-prose mb-10">\n Last updated: {p.lastUpdated}\n </p>\n\n <section className="space-y-5 leading-relaxed text-foreground/90">\n {p.sections.map((s) => (\n <div key={s.heading}>\n <h2 className="font-serif text-2xl font-semibold mt-0">{s.heading}</h2>\n {typeof s.body === "string" ? (\n <p>{s.body}</p>\n ) : (\n <>\n <p>{s.body.intro}</p>\n <ul className="list-disc pl-6 space-y-2">\n {s.body.bullets.map((b) => (\n <li key={b}>{b}</li>\n ))}\n </ul>\n </>\n )}\n </div>\n ))}\n </section>\n </article>\n );\n}\n' }, { "path": "app/sitemap.ts", "kind": "text", "content": 'import type { MetadataRoute } from "next";\nimport { getServerClient, type Product } from "@cimplify/sdk/server";\nimport { getSiteUrl } from "@/lib/site-url";\n\nconst STATIC_ROUTES: { path: string; priority: number; changeFrequency: "daily" | "weekly" | "monthly" }[] = [\n { path: "/", priority: 1.0, changeFrequency: "daily" },\n { path: "/shop", priority: 0.9, changeFrequency: "daily" },\n { path: "/about", priority: 0.5, changeFrequency: "monthly" },\n { path: "/faq", priority: 0.4, changeFrequency: "monthly" },\n { path: "/terms", priority: 0.2, changeFrequency: "monthly" },\n { path: "/privacy", priority: 0.2, changeFrequency: "monthly" },\n];\n\nexport default async function sitemap(): Promise<MetadataRoute.Sitemap> {\n const now = new Date();\n const siteUrl = await getSiteUrl();\n const client = getServerClient();\n\n const [productsRes, categoriesRes, collectionsRes] = await Promise.all([\n client.catalogue.getProducts({ limit: 500 }),\n client.catalogue.getCategories(),\n client.catalogue.getCollections(),\n ]);\n\n const products = productsRes.ok ? productsRes.value.items : [];\n const categories = categoriesRes.ok ? categoriesRes.value : [];\n const collections = collectionsRes.ok ? collectionsRes.value : [];\n\n const staticEntries: MetadataRoute.Sitemap = STATIC_ROUTES.map((r) => ({\n url: `${siteUrl}${r.path}`,\n lastModified: now,\n changeFrequency: r.changeFrequency,\n priority: r.priority,\n }));\n\n // Bakery uses a URL-driven product modal (`?product=<slug>` on the home or\n // shop pages). Emit those as deep-linkable URLs so search engines and LLMs\n // can index each product canonically.\n const productEntries: MetadataRoute.Sitemap = products.map((p: Product) => ({\n url: `${siteUrl}/shop?product=${encodeURIComponent(p.slug ?? p.id)}`,\n lastModified: p.updated_at ? new Date(p.updated_at) : now,\n changeFrequency: "weekly",\n priority: 0.7,\n }));\n\n const categoryEntries: MetadataRoute.Sitemap = categories.map((c) => ({\n url: `${siteUrl}/categories/${c.slug}`,\n lastModified: now,\n changeFrequency: "weekly",\n priority: 0.6,\n }));\n\n const collectionEntries: MetadataRoute.Sitemap = collections.map((c) => ({\n url: `${siteUrl}/collections/${c.slug}`,\n lastModified: now,\n changeFrequency: "weekly",\n priority: 0.6,\n }));\n\n return [...staticEntries, ...categoryEntries, ...collectionEntries, ...productEntries];\n}\n' }, { "path": "app/account/orders/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { AccountIframe } from "@/components/account-iframe";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `Orders \u2014 ${brand.name}`,\n};\n\nexport default function OrdersPage() {\n return (\n <article className="max-w-5xl mx-auto px-6 sm:px-8 py-12">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2">\n Account\n </p>\n <h1 className="font-serif text-[clamp(2rem,4vw,2.75rem)] font-semibold mb-8 -tracking-[0.02em]">\n Your orders\n </h1>\n <AccountIframe section="orders" />\n </article>\n );\n}\n' }, { "path": "app/account/addresses/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { AccountIframe } from "@/components/account-iframe";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `Addresses \u2014 ${brand.name}`,\n};\n\nexport default function AddressesPage() {\n return (\n <article className="max-w-5xl mx-auto px-6 sm:px-8 py-12">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2">\n Account\n </p>\n <h1 className="font-serif text-[clamp(2rem,4vw,2.75rem)] font-semibold mb-8 -tracking-[0.02em]">\n Your addresses\n </h1>\n <AccountIframe section="addresses" />\n </article>\n );\n}\n' }, { "path": "app/account/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { AccountIframe } from "@/components/account-iframe";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `Account \u2014 ${brand.name}`,\n description: brand.account.signupSubtitle,\n};\n\nexport default function AccountPage() {\n return (\n <article className="max-w-5xl mx-auto px-6 sm:px-8 py-12">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2">\n {brand.account.accountEyebrow}\n </p>\n <h1 className="font-serif text-[clamp(2rem,4vw,2.75rem)] font-semibold mb-8 -tracking-[0.02em]">\n {brand.account.accountTitle}\n </h1>\n <AccountIframe />\n </article>\n );\n}\n' }, { "path": "app/account/settings/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { AccountIframe } from "@/components/account-iframe";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `Settings \u2014 ${brand.name}`,\n};\n\nexport default function SettingsPage() {\n return (\n <article className="max-w-5xl mx-auto px-6 sm:px-8 py-12">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2">\n Account\n </p>\n <h1 className="font-serif text-[clamp(2rem,4vw,2.75rem)] font-semibold mb-8 -tracking-[0.02em]">\n Settings\n </h1>\n <AccountIframe section="settings" />\n </article>\n );\n}\n' }, { "path": "app/orders/[id]/page.tsx", "kind": "text", "content": 'import Link from "next/link";\n\nexport default async function OrderPage({ params }: { params: Promise<{ id: string }> }) {\n const { id } = await params;\n return (\n <section className="max-w-2xl mx-auto px-6 sm:px-8 py-20 text-center">\n <h1 className="font-serif text-3xl mt-0 mb-3">Thanks \u2014 your order is confirmed</h1>\n <p className="text-muted-foreground">\n Order <code className="font-mono text-foreground">{id}</code>\n </p>\n <p className="mt-6">\n <Link\n href="/"\n className="inline-block px-6 py-3 rounded-full bg-primary text-primary-foreground font-semibold text-sm transition-colors hover:bg-primary/90"\n >\n Continue shopping\n </Link>\n </p>\n </section>\n );\n}\n' }, { "path": "app/shipping/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { brand } from "@/lib/brand";\nimport { PolicyPage } from "@/components/policy-page";\n\nexport const metadata: Metadata = {\n title: `${brand.shipping.title} \u2014 ${brand.name}`,\n description: brand.shipping.sections[0]?.body\n ? typeof brand.shipping.sections[0].body === "string"\n ? brand.shipping.sections[0].body\n : brand.shipping.sections[0].body.intro\n : undefined,\n};\n\nexport default function ShippingPage() {\n return <PolicyPage policy={brand.shipping} />;\n}\n' }, { "path": "app/error.tsx", "kind": "text", "content": '"use client";\n\nimport { useEffect } from "react";\nimport Link from "next/link";\n\n/**\n * Root error boundary. Next.js calls this whenever a thrown error escapes\n * a Server Component without being caught by a closer `error.tsx`.\n *\n * Wire `reportError` (Sentry, Datadog, etc.) here so production failures\n * surface \u2014 silently recovering hides real bugs.\n */\nexport default function GlobalError({\n error,\n reset,\n}: {\n error: Error & { digest?: string };\n reset: () => void;\n}) {\n useEffect(() => {\n // TODO: replace with your error reporter\n // eslint-disable-next-line no-console\n console.error("Storefront error:", error);\n }, [error]);\n\n return (\n <section className="max-w-2xl mx-auto px-6 sm:px-8 py-20 text-center">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-3">\n Something broke\n </p>\n <h1 className="font-serif text-[clamp(2rem,4vw,2.75rem)] font-semibold mb-4">\n That wasn't supposed to happen.\n </h1>\n <p className="text-muted-foreground leading-relaxed mb-8">\n We've been notified. Refresh the page, or head back home \u2014\n most of the time the second try just works.\n </p>\n {error.digest && (\n <p className="text-xs font-mono text-muted-foreground mb-6">\n Reference: <code className="text-foreground">{error.digest}</code>\n </p>\n )}\n <div className="flex flex-wrap items-center justify-center gap-3">\n <button\n type="button"\n onClick={reset}\n className="inline-block px-6 py-3 rounded-full bg-primary text-primary-foreground font-semibold text-sm transition-colors hover:bg-primary/90"\n >\n Try again\n </button>\n <Link\n href="/"\n className="inline-block px-6 py-3 rounded-full border border-border hover:bg-muted transition-colors text-sm font-medium"\n >\n Back home\n </Link>\n </div>\n </section>\n );\n}\n' }, { "path": "app/layout.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { Inter, Playfair_Display } from "next/font/google";\nimport "./globals.css";\nimport { Providers } from "@/components/providers";\nimport { Header } from "@/components/header";\nimport { Footer } from "@/components/footer";\nimport { ProductModal } from "@/components/product-modal";\nimport { CartDrawer } from "@/components/cart-drawer";\nimport { OrganizationJsonLd } from "@/components/json-ld";\nimport { Suspense } from "react";\nimport { brand } from "@/lib/brand";\nimport { getSiteUrl } from "@/lib/site-url";\n\nconst inter = Inter({\n subsets: ["latin"],\n variable: "--font-sans",\n display: "swap",\n});\n\nconst playfair = Playfair_Display({\n subsets: ["latin"],\n variable: "--font-serif",\n display: "swap",\n});\n\nexport async function generateMetadata(): Promise<Metadata> {\n const siteUrl = await getSiteUrl();\n return {\n metadataBase: new URL(siteUrl),\n title: {\n default: brand.name,\n template: `%s \u2014 ${brand.name}`,\n },\n description: brand.description,\n openGraph: {\n type: "website",\n siteName: brand.name,\n locale: brand.locale,\n },\n twitter: { card: "summary_large_image" },\n };\n}\n\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\n return (\n <html lang="en" suppressHydrationWarning className={`${inter.variable} ${playfair.variable}`}>\n <body\n suppressHydrationWarning\n className="min-h-screen flex flex-col bg-background text-foreground font-sans"\n >\n <Suspense fallback={null}>\n <OrganizationJsonLd />\n </Suspense>\n <Providers>\n <Header />\n <main className="flex-1 pb-12 w-full">\n <Suspense fallback={null}>{children}</Suspense>\n </main>\n <Footer />\n <Suspense fallback={null}>\n <ProductModal />\n </Suspense>\n <CartDrawer />\n </Providers>\n </body>\n </html>\n );\n}\n' }, { "path": "app/robots.ts", "kind": "text", "content": 'import type { MetadataRoute } from "next";\nimport { getSiteUrl } from "@/lib/site-url";\n\nexport default async function robots(): Promise<MetadataRoute.Robots> {\n const siteUrl = await getSiteUrl();\n return {\n rules: [\n {\n userAgent: "*",\n allow: "/",\n disallow: ["/cart", "/checkout", "/orders/", "/api/"],\n },\n ],\n sitemap: `${siteUrl}/sitemap.xml`,\n host: siteUrl,\n };\n}\n' }, { "path": "app/checkout/page.tsx", "kind": "text", "content": '"use client";\n\nimport { useRouter } from "next/navigation";\nimport { CheckoutPage as SdkCheckoutPage } from "@cimplify/sdk/react";\n\nexport default function CheckoutPage() {\n const router = useRouter();\n return (\n <SdkCheckoutPage\n onComplete={(result) => {\n if (result.success && result.order) {\n router.push(`/orders/${result.order.id}`);\n }\n }}\n />\n );\n}\n' }, { "path": "app/not-found.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport Link from "next/link";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `Page not found \u2014 ${brand.name}`,\n description: "We couldn\'t find that page.",\n};\n\nexport default function NotFound() {\n return (\n <section className="max-w-2xl mx-auto px-6 sm:px-8 py-20 text-center">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-3">\n 404\n </p>\n <h1 className="font-serif text-[clamp(2.5rem,5vw,3.5rem)] font-semibold mb-4">\n Page not found.\n </h1>\n <p className="text-muted-foreground leading-relaxed mb-8">\n The URL you followed might be old, a typo, or pointing at a product\n that's sold out for the day. Try the menu or head back home.\n </p>\n <div className="flex flex-wrap items-center justify-center gap-3">\n <Link\n href="/shop"\n className="inline-block px-6 py-3 rounded-full bg-primary text-primary-foreground font-semibold text-sm transition-colors hover:bg-primary/90"\n >\n Browse the menu\n </Link>\n <Link\n href="/"\n className="inline-block px-6 py-3 rounded-full border border-border hover:bg-muted transition-colors text-sm font-medium"\n >\n Back home\n </Link>\n </div>\n </section>\n );\n}\n' }, { "path": "app/.well-known/ucp/route.ts", "kind": "text", "content": 'import { NextResponse } from "next/server";\n\n/**\n * UCP (Universal Commerce Protocol) manifest discovery endpoint.\n *\n * Agents \u2014 Claude, ChatGPT, Gemini, MCP clients \u2014 probe\n * `https://<your-domain>/.well-known/ucp` to learn what commerce\n * capabilities your storefront supports. We resolve the business\'s\n * UCP handle from the public key (via the storefront API), then forward\n * to Cimplify for the canonical manifest. Edge-cached for an hour\n * because capabilities change rarely.\n */\nconst UCP_API_BASE = "https://api.cimplify.io";\nconst STOREFRONT_API_BASE =\n process.env.NODE_ENV === "production"\n ? "https://storefronts.cimplify.io"\n : "http://127.0.0.1:8787";\n\nexport async function GET() {\n const publicKey = process.env.NEXT_PUBLIC_CIMPLIFY_PUBLIC_KEY;\n if (!publicKey) {\n return NextResponse.json(\n {\n error: "NEXT_PUBLIC_CIMPLIFY_PUBLIC_KEY not set",\n remediation:\n "Set NEXT_PUBLIC_CIMPLIFY_PUBLIC_KEY in .env.local (and your deployment env).",\n },\n { status: 500 },\n );\n }\n\n try {\n // Step 1 \u2014 resolve the business handle from the public key.\n const businessResp = await fetch(`${STOREFRONT_API_BASE}/api/v1/business`, {\n headers: { "X-API-Key": publicKey, "Content-Type": "application/json" },\n next: { revalidate: 3600 },\n });\n\n if (!businessResp.ok) {\n return NextResponse.json(\n { error: `Failed to resolve business: ${businessResp.status}` },\n { status: businessResp.status },\n );\n }\n\n const businessJson = await businessResp.json();\n const handle: string | undefined = businessJson?.data?.handle;\n if (!handle) {\n return NextResponse.json(\n { error: "Business has no handle configured" },\n { status: 500 },\n );\n }\n\n // Step 2 \u2014 fetch the canonical UCP manifest.\n const manifestResp = await fetch(\n `${UCP_API_BASE}/ucp/v1/${handle}/manifest`,\n {\n headers: { "Content-Type": "application/json" },\n next: { revalidate: 3600 },\n },\n );\n\n if (!manifestResp.ok) {\n return NextResponse.json(\n { error: `Upstream UCP manifest fetch failed: ${manifestResp.status}` },\n { status: manifestResp.status },\n );\n }\n\n const manifest = await manifestResp.json();\n return NextResponse.json(manifest, {\n headers: {\n "Content-Type": "application/json",\n "Cache-Control": "public, max-age=3600, s-maxage=3600",\n },\n });\n } catch (error) {\n return NextResponse.json(\n {\n error: "Failed to fetch UCP manifest",\n detail: error instanceof Error ? error.message : String(error),\n },\n { status: 500 },\n );\n }\n}\n' }, { "path": "app/sitemap-page/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport Link from "next/link";\nimport { getServerClient, tags, type Product } from "@cimplify/sdk/server";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `Sitemap \u2014 ${brand.name}`,\n description: "A human-readable index of every page on this site.",\n};\n\nexport const revalidate = 3600;\n\ninterface SitemapData {\n products: { slug: string; name: string }[];\n categories: { slug: string; name: string }[];\n collections: { slug: string; name: string }[];\n}\n\nasync function getSitemap(): Promise<SitemapData> {\n const client = getServerClient();\n const [pRes, cRes, colRes] = await Promise.all([\n client.catalogue.getProducts(\n { limit: 500 },\n { cacheOptions: { revalidate: 3600, tags: [tags.products()] } },\n ),\n client.catalogue.getCategories({\n cacheOptions: { revalidate: 3600, tags: [tags.categories()] },\n }),\n client.catalogue.getCollections({\n cacheOptions: { revalidate: 3600, tags: [tags.collections()] },\n }),\n ]);\n return {\n products: (pRes.ok ? pRes.value.items : []).map((p: Product) => ({\n slug: p.slug ?? p.id,\n name: p.name,\n })),\n categories: (cRes.ok ? cRes.value : []).map((c) => ({ slug: c.slug, name: c.name })),\n collections: (colRes.ok ? colRes.value : []).map((c) => ({ slug: c.slug, name: c.name })),\n };\n}\n\nconst STATIC_LINKS: { title: string; links: { href: string; label: string }[] }[] = [\n {\n title: "Browse",\n links: [\n { href: "/", label: "Home" },\n { href: "/shop", label: "Shop" },\n { href: "/search", label: "Search" },\n ],\n },\n {\n title: "Account",\n links: [\n { href: "/account", label: "Account" },\n { href: "/account/orders", label: "Orders" },\n { href: "/account/addresses", label: "Addresses" },\n { href: "/account/settings", label: "Settings" },\n { href: "/login", label: "Sign in" },\n { href: "/signup", label: "Create account" },\n { href: "/track-order", label: "Track an order" },\n { href: "/cart", label: "Cart" },\n { href: "/checkout", label: "Checkout" },\n ],\n },\n {\n title: "About",\n links: [\n { href: "/about", label: "About" },\n { href: "/faq", label: "FAQ" },\n { href: "/contact", label: "Contact" },\n ],\n },\n {\n title: "Policies",\n links: [\n { href: "/shipping", label: "Shipping" },\n { href: "/returns", label: "Returns" },\n { href: "/accessibility", label: "Accessibility" },\n { href: "/terms", label: "Terms of Service" },\n { href: "/privacy", label: "Privacy Policy" },\n ],\n },\n {\n title: "Machine-readable",\n links: [\n { href: "/sitemap.xml", label: "sitemap.xml (search engines)" },\n { href: "/llms.txt", label: "llms.txt (LLM agents)" },\n { href: "/robots.txt", label: "robots.txt" },\n { href: "/opensearch.xml", label: "opensearch.xml (browser search)" },\n ],\n },\n];\n\nexport default async function SitemapHtmlPage() {\n const { products, categories, collections } = await getSitemap();\n\n return (\n <article className="max-w-5xl mx-auto px-6 sm:px-8 py-16">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2">\n Sitemap\n </p>\n <h1 className="text-[clamp(2rem,4vw,2.75rem)] font-semibold mb-2 -tracking-[0.02em]">\n Every page, in one place.\n </h1>\n <p className="text-muted-foreground mb-12">\n For search engines, see <Link href="/sitemap.xml" className="text-primary hover:underline">/sitemap.xml</Link>.\n For LLM agents, see <Link href="/llms.txt" className="text-primary hover:underline">/llms.txt</Link>.\n </p>\n <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-10">\n {STATIC_LINKS.map((s) => (\n <Section key={s.title} title={s.title}>\n {s.links.map((l) => (\n <li key={l.href}>\n <Link href={l.href} className="hover:text-primary transition-colors">\n {l.label}\n </Link>\n </li>\n ))}\n </Section>\n ))}\n {categories.length > 0 && (\n <Section title="Categories">\n {categories.map((c) => (\n <li key={c.slug}>\n <Link href={`/categories/${c.slug}`} className="hover:text-primary transition-colors">\n {c.name}\n </Link>\n </li>\n ))}\n </Section>\n )}\n {collections.length > 0 && (\n <Section title="Collections">\n {collections.map((c) => (\n <li key={c.slug}>\n <Link href={`/collections/${c.slug}`} className="hover:text-primary transition-colors">\n {c.name}\n </Link>\n </li>\n ))}\n </Section>\n )}\n {products.length > 0 && (\n <Section title={`Products (${products.length})`}>\n {products.map((p) => (\n <li key={p.slug}>\n <Link href={`/shop?product=${encodeURIComponent(p.slug)}`} className="hover:text-primary transition-colors">\n {p.name}\n </Link>\n </li>\n ))}\n </Section>\n )}\n </div>\n </article>\n );\n}\n\nfunction Section({ title, children }: { title: string; children: React.ReactNode }) {\n return (\n <div>\n <p className="font-semibold text-[12px] uppercase tracking-[0.12em] text-foreground mb-3">\n {title}\n </p>\n <ul className="space-y-2 m-0 p-0 list-none text-sm text-muted-foreground">\n {children}\n </ul>\n </div>\n );\n}\n' }, { "path": "app/faq/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `FAQ \u2014 ${brand.name}`,\n description: "Delivery, pickup, custom cakes, allergens, payment \u2014 answers to the questions we hear most often.",\n};\n\nexport default function FaqPage() {\n const f = brand.faq;\n return (\n <article className="max-w-3xl mx-auto px-6 sm:px-8 py-16">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2">\n {f.eyebrow}\n </p>\n <h1 className="font-serif text-[clamp(2.25rem,5vw,3.5rem)] font-semibold mb-10 -tracking-[0.02em]">\n {f.title}\n </h1>\n <div className="space-y-12">\n {f.sections.map((section) => (\n <section key={section.title}>\n <h2 className="font-serif text-2xl font-semibold mb-5">{section.title}</h2>\n <dl className="space-y-6">\n {section.items.map((item) => (\n <div key={item.q}>\n <dt className="font-medium text-foreground mb-1.5">{item.q}</dt>\n <dd className="text-muted-foreground leading-relaxed">{item.a}</dd>\n </div>\n ))}\n </dl>\n </section>\n ))}\n </div>\n <p className="mt-12 pt-8 border-t border-border text-sm text-muted-foreground">\n {f.contactPrompt}{" "}\n <a\n href={`mailto:${f.contactEmail}`}\n className="text-primary font-semibold hover:underline"\n >\n {f.contactEmail}\n </a>{" "}\n and a real human will reply within 24 hours.\n </p>\n </article>\n );\n}\n' }, { "path": "app/terms/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `Terms of Service \u2014 ${brand.name}`,\n description: `The rules of the road for ordering from ${brand.name}.`,\n};\n\nexport default function TermsPage() {\n const t = brand.terms;\n return (\n <article className="max-w-3xl mx-auto px-6 sm:px-8 py-16 prose prose-lg max-w-none">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2 not-prose">\n {t.eyebrow}\n </p>\n <h1 className="font-serif text-[clamp(2.25rem,5vw,3.5rem)] font-semibold mb-2 -tracking-[0.02em]">\n {t.title}\n </h1>\n <p className="text-sm text-muted-foreground not-prose mb-10">\n Last updated: {t.lastUpdated}\n </p>\n\n <section className="space-y-5 leading-relaxed text-foreground/90">\n {t.sections.map((s) => (\n <div key={s.heading}>\n <h2 className="font-serif text-2xl font-semibold mt-0">{s.heading}</h2>\n {typeof s.body === "string" ? (\n <p>{s.body}</p>\n ) : (\n <>\n <p>{s.body.intro}</p>\n <ul className="list-disc pl-6 space-y-2">\n {s.body.bullets.map((b) => (\n <li key={b}>{b}</li>\n ))}\n </ul>\n </>\n )}\n </div>\n ))}\n </section>\n </article>\n );\n}\n' }, { "path": "app/returns/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { brand } from "@/lib/brand";\nimport { PolicyPage } from "@/components/policy-page";\n\nexport const metadata: Metadata = {\n title: `${brand.returns.title} \u2014 ${brand.name}`,\n};\n\nexport default function ReturnsPage() {\n return <PolicyPage policy={brand.returns} />;\n}\n' }, { "path": "app/collections/[slug]/listing-client.tsx", "kind": "text", "content": '"use client";\n\nimport { ProductGrid } from "@cimplify/sdk/react";\nimport type { Product } from "@cimplify/sdk";\nimport { StoreProductCard } from "@/components/store-product-card";\n\n/**\n * Client island for the collection listing. Receives server-fetched\n * products as props (serializable) and owns the `renderCard` function\n * (which can\'t cross the server/client boundary).\n */\nexport function ListingClient({ products }: { products: Product[] }) {\n return (\n <ProductGrid\n products={products}\n emptyMessage="No products in this collection yet."\n renderCard={(p) => <StoreProductCard product={p} />}\n />\n );\n}\n' }, { "path": "app/collections/[slug]/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { Suspense } from "react";\nimport Link from "next/link";\nimport { notFound } from "next/navigation";\nimport {\n getServerClient,\n tags,\n type Collection,\n type Product,\n} from "@cimplify/sdk/server";\nimport { ListingClient } from "./listing-client";\nimport { brand } from "@/lib/brand";\n\n// See app/products/[slug]/page.tsx for the rationale on generateStaticParams.\nexport async function generateStaticParams() {\n const r = await getServerClient().catalogue.getCollections();\n if (!r.ok || r.value.length === 0) {\n return [{ slug: "__placeholder__" }];\n }\n return r.value.map((c) => ({ slug: c.slug ?? c.id }));\n}\n\nexport const revalidate = 3600;\n\ninterface CollectionData {\n collection: Collection;\n products: Product[];\n}\n\ntype CollectionResult =\n | { ok: true; data: CollectionData }\n | { ok: false; code: string };\n\nasync function getCollection(slug: string): Promise<CollectionResult> {\n const client = getServerClient();\n const colRes = await client.catalogue.getCollectionBySlug(slug, {\n cacheOptions: { revalidate: 3600, tags: [tags.collections()] },\n });\n if (!colRes.ok) return { ok: false, code: colRes.error.code };\n\n const r = await client.catalogue.getCollectionProducts(colRes.value.id, undefined, {\n cacheOptions: {\n revalidate: 3600,\n tags: [\n tags.collection(colRes.value.id),\n tags.collectionProducts(colRes.value.id),\n ],\n },\n });\n const products = r.ok\n ? ((r.value as { items?: Product[] }).items ?? (r.value as Product[]))\n : [];\n return { ok: true, data: { collection: colRes.value, products } };\n}\n\nexport async function generateMetadata({\n params,\n}: {\n params: Promise<{ slug: string }>;\n}): Promise<Metadata> {\n const { slug } = await params;\n const result = await getCollection(slug);\n if (!result.ok) return {};\n const data = result.data;\n return {\n title: `${data.collection.name} \u2014 ${brand.name}`,\n description: data.collection.description ?? undefined,\n };\n}\n\nexport default async function CollectionPage({\n params,\n}: {\n params: Promise<{ slug: string }>;\n}) {\n return (\n <Suspense fallback={<CollectionSkeleton />}>\n <CollectionContent params={params} />\n </Suspense>\n );\n}\n\nasync function CollectionContent({\n params,\n}: {\n params: Promise<{ slug: string }>;\n}) {\n const { slug } = await params;\n const result = await getCollection(slug);\n if (!result.ok) {\n if (result.code === "NOT_FOUND") notFound();\n return <CollectionSkeleton />;\n }\n const { collection, products } = result.data;\n return (\n <section className="max-w-7xl mx-auto px-6 sm:px-8 pt-12">\n <header className="mb-8 text-center">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2">\n Collection\n </p>\n <h1 className="font-serif text-[clamp(2rem,4vw,2.75rem)] font-semibold mb-2">\n {collection.name}\n </h1>\n {collection.description && (\n <p className="mx-auto mb-2 max-w-xl text-muted-foreground">\n {collection.description}\n </p>\n )}\n <p className="text-sm text-muted-foreground">\n {products.length} item{products.length === 1 ? "" : "s"}\n </p>\n </header>\n <ListingClient products={products} />\n {products.length === 0 && (\n <p className="text-center mt-8">\n <Link href="/" className="text-primary font-semibold">\n \u2190 Back home\n </Link>\n </p>\n )}\n </section>\n );\n}\n\nfunction CollectionSkeleton() {\n return (\n <section className="max-w-7xl mx-auto px-6 sm:px-8 pt-12">\n <header className="mb-8 text-center">\n <div className="mx-auto h-3 w-20 bg-muted rounded mb-2 animate-pulse" />\n <div className="mx-auto h-10 w-64 bg-muted rounded mb-2 animate-pulse" />\n <div className="mx-auto h-4 w-80 bg-muted rounded animate-pulse" />\n </header>\n <div className="grid grid-cols-2 md:grid-cols-3 gap-4">\n {Array.from({ length: 6 }).map((_, i) => (\n <div key={i} className="aspect-square bg-muted rounded-2xl animate-pulse" />\n ))}\n </div>\n </section>\n );\n}\n' }, { "path": "app/shop/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { getServerClient, tags } from "@cimplify/sdk/server";\nimport { ShopClient } from "./shop-client";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `Shop \u2014 ${brand.name}`,\n description: brand.description,\n};\n\nexport const revalidate = 3600;\n\nasync function getShopData() {\n const client = getServerClient();\n const [p, c] = await Promise.all([\n client.catalogue.getProducts(\n { limit: 50 },\n { cacheOptions: { revalidate: 3600, tags: [tags.products()] } },\n ),\n client.catalogue.getCategories({\n cacheOptions: { revalidate: 3600, tags: [tags.categories()] },\n }),\n ]);\n return {\n products: p.ok ? p.value.items : [],\n categories: c.ok ? c.value : [],\n };\n}\n\nexport default async function ShopPage() {\n const { products, categories } = await getShopData();\n return <ShopClient products={products} categories={categories} />;\n}\n' }, { "path": "app/shop/shop-client.tsx", "kind": "text", "content": '"use client";\n\nimport { CataloguePage } from "@cimplify/sdk/react";\nimport type { Category, Product } from "@cimplify/sdk";\nimport { StoreProductCard } from "@/components/store-product-card";\n\n/**\n * Client island for the shop page. Server-side fetches all products and\n * categories (ISR-cached in `app/shop/page.tsx`), then hands\n * them to `<CataloguePage>` which owns the interactive filter / sort state.\n */\nexport function ShopClient({\n products,\n categories,\n}: {\n products: Product[];\n categories: Category[];\n}) {\n return (\n <CataloguePage\n title="The Menu"\n products={products}\n categories={categories}\n renderCard={(p) => <StoreProductCard product={p} />}\n />\n );\n}\n' }, { "path": "app/opensearch.xml/route.ts", "kind": "text", "content": 'import { brand } from "@/lib/brand";\nimport { getSiteUrl } from "@/lib/site-url";\n\n/**\n * OpenSearch description document \u2014 lets browsers add this site to the\n * address bar\'s search engine list. When users press Tab after typing the\n * domain, they get an inline search box that hits /search?q=...\n */\nexport async function GET(): Promise<Response> {\n const siteUrl = await getSiteUrl();\n const xml = `<?xml version="1.0" encoding="UTF-8"?>\n<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">\n <ShortName>${escapeXml(brand.shortName)}</ShortName>\n <Description>Search ${escapeXml(brand.name)}</Description>\n <InputEncoding>UTF-8</InputEncoding>\n <Url type="text/html" method="get" template="${siteUrl}/search?q={searchTerms}" />\n <Url type="application/opensearchdescription+xml" rel="self" template="${siteUrl}/opensearch.xml" />\n <moz:SearchForm>${siteUrl}/search</moz:SearchForm>\n</OpenSearchDescription>\n`;\n return new Response(xml, {\n headers: {\n "Content-Type": "application/opensearchdescription+xml; charset=utf-8",\n "Cache-Control": "public, max-age=86400",\n },\n });\n}\n\nfunction escapeXml(s: string): string {\n return s\n .replace(/&/g, "&")\n .replace(/</g, "<")\n .replace(/>/g, ">")\n .replace(/"/g, """)\n .replace(/\'/g, "'");\n}\n' }, { "path": "app/auth/signout/route.ts", "kind": "text", "content": 'import { buildSignoutCookies } from "@cimplify/sdk/server";\n\nconst CLIENT_ID = process.env.CIMPLIFY_CLIENT_ID ?? "";\n\nexport async function POST(): Promise<Response> {\n const headers = new Headers({ "Content-Type": "application/json" });\n for (const cookie of buildSignoutCookies({ clientId: CLIENT_ID })) {\n headers.append("Set-Cookie", cookie);\n }\n return new Response(JSON.stringify({ ok: true }), { status: 200, headers });\n}\n' }, { "path": "app/auth/session/route.ts", "kind": "text", "content": 'import { handleSessionRequest } from "@cimplify/sdk/server";\n\nconst CLIENT_ID = process.env.CIMPLIFY_CLIENT_ID ?? "";\nconst AUTH_URL = process.env.CIMPLIFY_AUTH_URL;\n\nexport async function GET(req: Request): Promise<Response> {\n if (!CLIENT_ID) {\n return Response.json({ sub: null }, { status: 200 });\n }\n return handleSessionRequest(req, { clientId: CLIENT_ID, authUrl: AUTH_URL });\n}\n' }, { "path": "app/auth/callback/route.ts", "kind": "text", "content": 'import { handleOidcCallback } from "@cimplify/sdk/server";\n\nconst CLIENT_ID = process.env.CIMPLIFY_CLIENT_ID ?? "";\nconst AUTH_URL = process.env.CIMPLIFY_AUTH_URL;\nconst REDIRECT_URI = process.env.CIMPLIFY_REDIRECT_URI ?? "";\n\nexport async function POST(req: Request): Promise<Response> {\n if (!CLIENT_ID || !REDIRECT_URI) {\n return Response.json({ error: "oidc_not_configured" }, { status: 500 });\n }\n return handleOidcCallback(req, {\n clientId: CLIENT_ID,\n authUrl: AUTH_URL,\n redirectUri: REDIRECT_URI,\n });\n}\n' }, { "path": "app/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { Suspense } from "react";\nimport { getServerClient, tags, type Product } from "@cimplify/sdk/server";\nimport { Hero } from "@/components/hero";\nimport { CollectionStrip } from "@/components/collection-strip";\nimport { CategoryGrid } from "@/components/category-grid";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `${brand.name} \u2014 ${brand.hero.title}`,\n description: brand.description,\n};\n\nexport const revalidate = 3600;\n\nasync function getHomeData() {\n const client = getServerClient();\n const [colRes, catRes] = await Promise.all([\n client.catalogue.getCollections({\n cacheOptions: { revalidate: 3600, tags: [tags.collections()] },\n }),\n client.catalogue.getCategories({\n cacheOptions: { revalidate: 3600, tags: [tags.categories()] },\n }),\n ]);\n const collections = colRes.ok ? colRes.value : [];\n const categories = catRes.ok ? catRes.value : [];\n\n const collectionsWithProducts = await Promise.all(\n collections.map(async (col) => {\n const r = await client.catalogue.getCollectionProducts(\n col.id,\n undefined,\n {\n cacheOptions: {\n revalidate: 3600,\n tags: [tags.collectionProducts(col.id)],\n },\n },\n );\n const items = r.ok\n ? ((r.value as { items?: Product[] }).items ?? (r.value as Product[]))\n : [];\n return { collection: col, products: items };\n }),\n );\n\n return {\n collections: collectionsWithProducts.filter((x) => x.products.length > 0),\n categories,\n };\n}\n\nexport default async function HomePage() {\n const { collections, categories } = await getHomeData();\n\n return (\n <>\n <Hero\n badge={brand.hero.badge}\n title={brand.hero.title}\n subtitle={brand.hero.subtitle}\n />\n {collections.map(({ collection, products }) => (\n <Suspense\n key={collection.id}\n fallback={<StripSkeleton title={collection.name} />}\n >\n <CollectionStrip\n collection={collection}\n products={products}\n collectionHref={`/collections/${collection.slug}`}\n />\n </Suspense>\n ))}\n <Suspense fallback={<CategoryGridSkeleton />}>\n <CategoryGrid categories={categories} />\n </Suspense>\n </>\n );\n}\n\nfunction StripSkeleton({ title }: { title: string }) {\n return (\n <section className="max-w-7xl mx-auto px-6 sm:px-8 pt-12">\n <h2 className="font-serif text-[28px] font-semibold m-0 mb-5">{title}</h2>\n <div className="grid grid-flow-col auto-cols-[minmax(220px,1fr)] gap-4 overflow-x-auto pb-2">\n {Array.from({ length: 5 }).map((_, i) => (\n <div key={i} className="aspect-square bg-muted rounded-2xl animate-pulse" />\n ))}\n </div>\n </section>\n );\n}\n\nfunction CategoryGridSkeleton() {\n return (\n <section className="max-w-7xl mx-auto px-6 sm:px-8 pt-14">\n <div className="h-8 w-48 bg-muted rounded mb-5 animate-pulse" />\n <div className="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4">\n {Array.from({ length: 6 }).map((_, i) => (\n <div key={i} className="h-32 bg-muted rounded-2xl animate-pulse" />\n ))}\n </div>\n </section>\n );\n}\n' }, { "path": "app/accessibility/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { brand } from "@/lib/brand";\nimport { PolicyPage } from "@/components/policy-page";\n\nexport const metadata: Metadata = {\n title: `${brand.accessibility.title} \u2014 ${brand.name}`,\n};\n\nexport default function AccessibilityPage() {\n return <PolicyPage policy={brand.accessibility} />;\n}\n' }, { "path": "app/track-order/track-order-form.tsx", "kind": "text", "content": '"use client";\n\nimport { useState } from "react";\nimport { useRouter } from "next/navigation";\n\n/**\n * Guest order tracker. Routes /orders/<id> with the entered id; the\n * post-checkout confirmation page already lives at /orders/[id] so this\n * just sends the visitor there. Replace the redirect with a real lookup\n * (e.g. Cimplify orders API + email-match guard) for production.\n */\nexport function TrackOrderForm() {\n const router = useRouter();\n const [orderId, setOrderId] = useState("");\n const [email, setEmail] = useState("");\n\n return (\n <form\n onSubmit={(e) => {\n e.preventDefault();\n if (!orderId.trim()) return;\n router.push(`/orders/${encodeURIComponent(orderId.trim())}`);\n }}\n className="space-y-4 rounded-2xl border border-border bg-card p-6"\n >\n <div>\n <label\n htmlFor="orderId"\n className="text-xs font-semibold uppercase tracking-wider text-muted-foreground block mb-1.5"\n >\n Order number\n </label>\n <input\n id="orderId"\n name="orderId"\n required\n value={orderId}\n onChange={(e) => setOrderId(e.target.value)}\n placeholder="ord_abc123\u2026"\n className="w-full px-4 py-3 rounded-md bg-background border border-border focus:border-primary focus:ring-2 focus:ring-primary/20 outline-none text-sm"\n />\n </div>\n <div>\n <label\n htmlFor="email"\n className="text-xs font-semibold uppercase tracking-wider text-muted-foreground block mb-1.5"\n >\n Order email\n </label>\n <input\n id="email"\n name="email"\n type="email"\n required\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n placeholder="you@email.com"\n className="w-full px-4 py-3 rounded-md bg-background border border-border focus:border-primary focus:ring-2 focus:ring-primary/20 outline-none text-sm"\n />\n </div>\n <button\n type="submit"\n className="w-full inline-flex items-center justify-center px-5 py-3 rounded-md bg-primary text-primary-foreground font-semibold text-sm hover:bg-primary/90 transition-colors"\n >\n Track order\n </button>\n </form>\n );\n}\n' }, { "path": "app/track-order/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { TrackOrderForm } from "./track-order-form";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `Track an order \u2014 ${brand.name}`,\n description: brand.trackOrder.body,\n};\n\nexport default function TrackOrderPage() {\n const t = brand.trackOrder;\n return (\n <article className="max-w-2xl mx-auto px-6 sm:px-8 py-16">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2">\n {t.eyebrow}\n </p>\n <h1 className="font-serif text-[clamp(2rem,5vw,3rem)] font-semibold mb-4 -tracking-[0.02em]">\n {t.title}\n </h1>\n <p className="text-muted-foreground leading-relaxed mb-8">{t.body}</p>\n <TrackOrderForm />\n </article>\n );\n}\n' }, { "path": "app/search/search-client.tsx", "kind": "text", "content": '"use client";\n\nimport { SearchPage } from "@cimplify/sdk/react";\n\nexport function SearchClient() {\n return <SearchPage />;\n}\n' }, { "path": "app/search/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { Suspense } from "react";\nimport { SearchClient } from "./search-client";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `Search \u2014 ${brand.name}`,\n description: `Search ${brand.name} \u2014 products, collections, categories.`,\n};\n\nexport default function SearchPage() {\n return (\n <article className="max-w-7xl mx-auto px-6 sm:px-8 py-10">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2">\n Search\n </p>\n <h1 className="font-serif text-[clamp(2rem,4vw,2.75rem)] font-semibold mb-8 -tracking-[0.02em]">\n Find anything.\n </h1>\n <Suspense fallback={<SearchSkeleton />}>\n <SearchClient />\n </Suspense>\n </article>\n );\n}\n\nfunction SearchSkeleton() {\n return (\n <div>\n <div className="h-12 w-full max-w-xl bg-muted rounded animate-pulse mb-8" />\n <div className="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-3 sm:gap-4">\n {Array.from({ length: 8 }).map((_, i) => (\n <div key={i} className="aspect-[4/3] bg-muted rounded-2xl animate-pulse" />\n ))}\n </div>\n </div>\n );\n}\n' }, { "path": "app/cart/page.tsx", "kind": "text", "content": '"use client";\n\nimport { useRouter } from "next/navigation";\nimport { CartPage as SdkCartPage } from "@cimplify/sdk/react";\n\nexport default function CartPage() {\n const router = useRouter();\n return <SdkCartPage onCheckout={() => router.push("/checkout")} />;\n}\n' }, { "path": ".claude/skills/cimplify-storefront/SKILL.md", "kind": "text", "content": "---\nname: cimplify-storefront\ndescription: Build, customize, rebrand, or deploy a Cimplify-scaffolded storefront. Triggers when the user asks to create a storefront, rebrand a Cimplify template, change the palette, add a page, deploy to Cimplify, or works in a project containing `lib/brand.ts` and `next.config.ts`.\n---\n\n# Cimplify Storefront skill\n\nYou're working on a project scaffolded from `cimplify init`. The architecture is opinionated and the rebrand surface is intentionally small. Read `AGENTS.md` at the project root for the file \u2194 brand-field map for *this template's* industry; this skill gives you the playbook that's the same across all eight.\n\n## The contract \u2014 never break\n\n1. **`lib/brand.ts` is the only place for content edits.** Every visible string reads from this file. If a string isn't in `brand`, *add a field* to the `Brand` interface \u2014 don't hardcode it in a page or component.\n2. **`app/globals.css` `@theme { \u2026 }`** holds palette + radius + font references. To re-skin the entire site, edit only this block.\n3. **Pages use ISR**, not Cache Components. Each page sets `export const revalidate = <seconds>` and reads from the SDK with `cacheOptions: { revalidate, tags }`. Don't add `'use cache'` / `cacheTag` / `cacheLife` \u2014 they require Node-specific runtime guarantees Cloudflare Workers doesn't provide, and their postponed state blows past CF's 128MB zlib limit.\n4. **`cacheComponents` stays OFF** in `next.config.ts`. The deploy target is Cloudflare Workers via opennext.\n5. **Client islands** (anything reading `useSearchParams`, `usePathname`, `useRouter`, `useState`) live behind `<Suspense>`.\n6. **`bun run test:run` (vitest)** is the canonical test runner. `bun test` will show false failures because Bun's `vi` shim is incomplete.\n7. **Cart, checkout, orders stay client.** They're session-bound. Don't try to SSR them.\n\n## The brand-field schema (in `lib/brand.ts`)\n\n```\nidentity: name, shortName, microTag, description, schemaType, currency, locale\ncontact: address, streetAddress, city, countryCode, phone, phoneTel, email, privacyEmail, hours\nsocials: [{ label, href, icon }] // icon \u2208 instagram|x|tiktok|facebook|youtube|linkedin|whatsapp\nheader: { nav: [{ label, href }] }\nhero: { badge, title, subtitle, primaryCtaLabel, secondaryCtaLabel?, secondaryCtaHref? }\noptional: trustItems[]?, brandStrip?, promo?, tradeIn? // render conditionally\nnewsletter: { eyebrow, title, body, placeholder, submitLabel, successLabel }\nabout: { eyebrow, title, paragraphs[], sections[{ heading, body }] }\nfaq: { eyebrow, title, sections[{ title, items[{ q, a }] }], contactPrompt, contactEmail }\nterms,\nprivacy,\nshipping,\nreturns,\naccessibility: { eyebrow, title, lastUpdated, sections[{ heading, body | { intro, bullets[] } }] }\naccount: eyebrows + titles for /account, /login, /signup\ncontactPage: { eyebrow, title, body, reasons[], directLines[{ label, value, href }] }\ntrackOrder: { eyebrow, title, body }\nfooter: { blurb, sitemap[{ title, links[] }], poweredBy? }\nllms: { summary } // opens /llms.txt\nmock: { seed, businessId }\n```\n\n## Playbook \u2014 common tasks\n\n### Rebrand a storefront for a new merchant\n\n1. Edit `lib/brand.ts`. Replace every field with the merchant's content. Use the brief / context the user gave you.\n2. Edit `app/globals.css` `@theme { \u2026 }`. Change `--color-primary`, `--color-background`, `--color-foreground`, optionally `--radius`. Use OKLCH; if the brand only gave hex, convert.\n3. (Optional) Swap fonts in `app/layout.tsx` \u2014 `next/font/google` import + the variable wired into the `<html>` className.\n4. Set `.env.local`: `NEXT_PUBLIC_CIMPLIFY_PUBLIC_KEY` (optional: `NEXT_PUBLIC_SITE_URL`).\n\nDon't touch any other file. If the rebrand needs content not in the schema, add the field to `Brand` first, populate it, then read it from the page.\n\n### Add a new section / component\n\n1. Build it as a Server Component in `components/` (or a client island in `*-client.tsx` if interactive).\n2. Read merchant copy from `brand`. Add new fields to the `Brand` interface if needed.\n3. Wrap interactive bits in `<Suspense fallback={\u2026}>` so static chrome streams first.\n4. Compose into the page.\n\n### Wire a Server Action that mutates data\n\n```ts\n\"use server\";\nimport { getServerClient, revalidateProducts } from \"@cimplify/sdk/server\";\n\nexport async function createProduct(input: ProductInput) {\n await getServerClient().catalogue.createProduct(input);\n revalidateProducts();\n}\n```\n\nAfter every mutation, call the matching `revalidate*` helper from `@cimplify/sdk/server`: `revalidateProducts`, `revalidateProduct(id)`, `revalidateCategories`, `revalidateCategory(id)`, `revalidateCollections`, `revalidateCollection(id)`, `revalidateBusiness`. These fire eviction events the central tag-cache worker picks up \u2014 it drops R2 entries and purges Cloudflare's edge.\n\n### Add a Server Component data fetch (ISR)\n\n```ts\nimport { getServerClient, tags } from \"@cimplify/sdk/server\";\n\nexport const revalidate = 3600; // page-level baseline\n\nasync function getProducts() {\n const r = await getServerClient().catalogue.getProducts({\n limit: 24,\n cacheOptions: { revalidate: 3600, tags: [tags.products()] },\n });\n if (!r.ok) {\n // Soft-render on transient errors so the page degrades gracefully\n // instead of hard-failing with React #419. Only call notFound() on\n // genuine 404 from origin.\n if (r.error.code === \"NOT_FOUND\") notFound();\n return [];\n }\n return r.value.items;\n}\n```\n\nFor `[slug]` routes, add `generateStaticParams` with a placeholder fallback so the page is statically prerenderable even with no upstream data yet:\n\n```ts\nexport async function generateStaticParams() {\n return [{ slug: \"__placeholder__\" }];\n}\n```\n\n### Eject an SDK component for deeper customization\n\nTry `classNames`, `renderImage`, `renderLink`, slot props first. If those run out:\n\n```bash\ncimplify list\ncimplify add product-card --dir src/components/cimplify\n```\n\nOnce ejected, the file is yours. Hooks/types still come from `@cimplify/sdk`.\n\n### Deploy\n\n```bash\ncimplify login\ncimplify projects create my-store\ncimplify link <project-id>\ncimplify env push\ncimplify deploy --prod\ncimplify logs --follow\ncimplify domains add my-store.com\n```\n\n## Pitfalls \u2014 explicit \u274C list\n\n- \u274C Hardcoding any visible string in a page or component. Always `brand.X`.\n- \u274C Adding `'use cache'`, `cacheTag`, `cacheLife`, or enabling `cacheComponents: true`. We deploy to Cloudflare Workers; postponed state exceeds the 128MB zlib limit. Use `cacheOptions` on SDK reads + `export const revalidate` per page.\n- \u274C Using `unstable_cache` \u2014 removed in Next 16. Use SDK `cacheOptions` instead.\n- \u274C Bypassing `getServerClient()` and calling `createCimplifyClient` directly in a Server Component \u2014 loses per-request memoization.\n- \u274C Mutating data without calling the matching `revalidate*` helper.\n- \u274C Calling `notFound()` on transient SDK errors \u2014 causes React #419 mid-stream. Check the `Result.error.code === \"NOT_FOUND\"` first; otherwise soft-render a skeleton.\n- \u274C Adding an `app/error.tsx` handler that calls `reset()` without logging \u2014 silently swallowed errors hide bugs.\n- \u274C Running `bun test` and reporting failures. Use `bun run test:run` (vitest).\n- \u274C Editing the per-template `AGENTS.md` to remove notes about TODOs (contact form, newsletter fake submits) \u2014 they're real.\n\n## Where things live\n\n| Need | Look here |\n|---|---|\n| Which page reads which `brand.X` field | `AGENTS.md` at project root |\n| Architectural rules | `AGENTS.md` at project root + this skill |\n| Running locally | `bun dev` (boots mock + Next together) |\n| Switching mock seed | edit `dev:mock` in `package.json` |\n| Full SDK reference | `cimplify.dev/sdk/optimization`, `cimplify.dev/sdk/server` |\n\n## What to do when the user asks something out-of-scope\n\nIf the user asks for something the template doesn't support out of the box:\n\n1. **Check first** \u2014 is there an SDK component or hook that does it? `@cimplify/sdk/react` has 50+ components, 30+ hooks. Search `node_modules/@cimplify/sdk/dist/react.d.mts` if needed.\n2. **Compose from existing parts** before authoring new ones.\n3. **If genuinely missing** \u2014 build the new component, hoist its strings into `brand.ts`, document in `AGENTS.md`.\n\nDon't introduce competing patterns (a new caching strategy, a new auth flow, a new theming system). The template's opinions are intentional.\n" }, { "path": "postcss.config.mjs", "kind": "text", "content": 'const config = {\n plugins: {\n "@tailwindcss/postcss": {},\n },\n};\n\nexport default config;\n' }, { "path": ".env.example", "kind": "text", "content": "# Your tenant public key. Get it from the desk's Developers tab.\n# `cpk_live_*` / `cpk_test_*` keys auto-route same-origin requests\n# to hosted Cimplify in both dev and prod. Anything else (`mock-dev`,\n# empty) falls back to the local `cimplify dev` mock.\nNEXT_PUBLIC_CIMPLIFY_PUBLIC_KEY=mock-dev\n\n# Optional. Forces a fixed canonical URL for sitemap.xml, robots.txt,\n# OpenGraph, and llms.txt. Leave unset and the storefront derives the\n# canonical from the request `Host` header automatically.\n# NEXT_PUBLIC_SITE_URL=\n" }, { "path": "README.md", "kind": "text", "content": "# __STOREFRONT_NAME__\n\nA Cimplify storefront scaffolded from the **bakery** template \u2014 Next.js 16 (App Router), React 19, Tailwind v4. Warm food-styled palette, Playfair Display + Inter typography, designed for bakeries, p\xE2tisseries, and food businesses.\n\nFor a different industry, scaffold with `--template`:\n\n```bash\ncimplify init my-store --template retail # electronics / consumer goods\ncimplify init my-store --template bakery # default \u2014 food / p\xE2tisserie\n```\n\n## Run\n\n```bash\nbun install\nbun dev\n```\n\nTwo things start in parallel:\n\n- `cimplify-mock` \u2014 the Cimplify mock API on `http://127.0.0.1:8787` (Akua's Bakery seeded by default).\n- `next dev` \u2014 this storefront on `http://localhost:3000`.\n\nOpen the storefront in your browser. Edit `app/page.tsx` to start customising. The SDK ships full pages (`<CataloguePage>`, `<ProductPage>`, `<CartPage>`, `<CheckoutPage>`) and layouts (`<DefaultProductLayout>`, `<FoodProductLayout>`, etc.) that you can swap in.\n\n## Structure\n\n```\napp/\n layout.tsx # root layout, fonts, providers, header/footer/modal\n page.tsx # home\n shop/page.tsx # full catalogue (SDK <CataloguePage/>)\n collections/[slug]/ # collection landing\n categories/[slug]/ # category landing\n cart/page.tsx # SDK <CartPage/>\n checkout/page.tsx # SDK <CheckoutPage/>\n orders/[id]/page.tsx # post-checkout thank-you\n globals.css # Tailwind import + theme tokens\ncomponents/\n providers.tsx # CimplifyProvider client wrapper\n header.tsx, footer.tsx, hero.tsx\n store-product-card.tsx # SDK <ProductCard/> wired to URL-driven modal\n product-modal.tsx # ?product=<slug> deep-linkable modal\n collection-strip.tsx # horizontal product strip\n category-grid.tsx # SDK <CategoryGrid/> with router navigation\nlib/\n cart.ts # useCartCount() for the header pill\n```\n\n## Switch seed\n\n```bash\ncimplify-mock --seed restaurant # Mama's Kitchen\ncimplify-mock --seed retail # Currents Electronics\ncimplify-mock --seed services # Serene Spa\ncimplify-mock --seed grocery # FreshMart\n```\n\n## Go live\n\n```diff\n# .env.local\n- NEXT_PUBLIC_CIMPLIFY_PUBLIC_KEY=mock-dev\n+ NEXT_PUBLIC_CIMPLIFY_PUBLIC_KEY=<your tenant key>\n```\n\nDeploy with `cimplify deploy --prod` after linking the project. See [`cimplify` CLI docs](https://www.cimplify.dev/docs/cli). `next.config.ts` already whitelists the SDK image hosts under `images.remotePatterns`.\n" }, { "path": ".cursor/rules/cimplify-storefront.mdc", "kind": "binary", "content": "LS0tCmRlc2NyaXB0aW9uOiBDaW1wbGlmeSBzdG9yZWZyb250IOKAlCBhcmNoaXRlY3R1cmFsIHJ1bGVzIGFuZCByZWJyYW5kIGNvbnRyYWN0IGZvciBhIHByb2plY3Qgc2NhZmZvbGRlZCBmcm9tIGBjaW1wbGlmeSBpbml0YC4gVHJpZ2dlcnMgd2hlbiBmaWxlcyBsaWtlIGxpYi9icmFuZC50cywgYXBwL2dsb2JhbHMuY3NzLCBjb21wb25lbnRzL2hlYWRlci50c3gsIG9yIC5jaW1wbGlmeS9wcm9qZWN0Lmpzb24gYXJlIGluIHRoZSB3b3Jrc3BhY2UuCmdsb2JzOiBbImxpYi9icmFuZC50cyIsICJhcHAvKioiLCAiY29tcG9uZW50cy8qKiIsICIuZW52LmxvY2FsIiwgIm5leHQuY29uZmlnLnRzIl0KYWx3YXlzQXBwbHk6IHRydWUKLS0tCgojIENpbXBsaWZ5IHN0b3JlZnJvbnQKClRoaXMgcHJvamVjdCB3YXMgc2NhZmZvbGRlZCBmcm9tIGEgQ2ltcGxpZnkgdGVtcGxhdGUuIFJlYWQgYEFHRU5UUy5tZGAgYXQgdGhlIHByb2plY3Qgcm9vdCBmb3IgdGhlIGZpbGUg4oaUIGBicmFuZC5YYCBmaWVsZCBtYXAgYW5kIGAuY2xhdWRlL3NraWxscy9jaW1wbGlmeS1zdG9yZWZyb250L1NLSUxMLm1kYCBmb3IgdGhlIGZ1bGwgcGxheWJvb2suCgojIyBUaGUgY29udHJhY3QKCjEuICoqYGxpYi9icmFuZC50c2AqKiDigJQgZXZlcnkgdmlzaWJsZSBzdHJpbmcuIElmIHNvbWV0aGluZyBpc24ndCB0aGVyZSwgYWRkIGEgZmllbGQgdG8gdGhlIGBCcmFuZGAgaW50ZXJmYWNlOyBkb24ndCBoYXJkY29kZS4KMi4gKipgYXBwL2dsb2JhbHMuY3NzYCBgQHRoZW1lYCBibG9jayoqIOKAlCBwYWxldHRlLCByYWRpdXMsIGZvbnQgcmVmZXJlbmNlcy4KMy4gKipTZXJ2ZXIgQ29tcG9uZW50cyBhcmUgY2FjaGVkKiogdmlhIGAndXNlIGNhY2hlJ2AgKyBgY2FjaGVUYWcodGFncy5YKCkpYCArIGBjYWNoZUxpZmUoImhvdXJzIilgLiBEb24ndCBkb3duZ3JhZGUgdG8gY2xpZW50IHRvIHNpbGVuY2UgYSB3YXJuaW5nLgo0LiAqKkNsaWVudCBpc2xhbmRzKiogYmVoaW5kIGA8U3VzcGVuc2U+YC4KNS4gKipgY2FjaGVDb21wb25lbnRzOiB0cnVlYCoqIGluIGBuZXh0LmNvbmZpZy50c2AgaXMgbm9uLW5lZ290aWFibGUuCjYuIFVzZSAqKmBidW4gcnVuIHRlc3Q6cnVuYCoqICh2aXRlc3QpLCBub3QgYGJ1biB0ZXN0YC4KCiMjIERvbid0CgotIEhhcmRjb2RlIHZpc2libGUgc3RyaW5ncyBpbiBwYWdlcy9jb21wb25lbnRzLgotIFVzZSBgdW5zdGFibGVfY2FjaGVgIChOZXh0IDE2IHVzZXMgYCd1c2UgY2FjaGUnYCkuCi0gQnlwYXNzIGBnZXRTZXJ2ZXJDbGllbnQoKWAgKGxvc2VzIHBlci1yZXF1ZXN0IG1lbW9pemF0aW9uKS4KLSBNdXRhdGUgd2l0aG91dCBjYWxsaW5nIHRoZSBtYXRjaGluZyBgcmV2YWxpZGF0ZSpgIGhlbHBlciBmcm9tIGBAY2ltcGxpZnkvc2RrL3NlcnZlcmAuCg==" }, { "path": "vitest.config.ts", "kind": "text", "content": 'import { defineConfig } from "vitest/config";\n\nexport default defineConfig({\n test: {\n environment: "node",\n include: ["__tests__/**/*.test.ts"],\n globals: false,\n },\n});\n' }, { "path": "tsconfig.json", "kind": "text", "content": '{\n "compilerOptions": {\n "target": "ES2022",\n "lib": [\n "dom",\n "dom.iterable",\n "esnext"\n ],\n "allowJs": false,\n "skipLibCheck": true,\n "strict": true,\n "noEmit": true,\n "esModuleInterop": true,\n "module": "esnext",\n "moduleResolution": "bundler",\n "resolveJsonModule": true,\n "isolatedModules": true,\n "jsx": "react-jsx",\n "incremental": true,\n "plugins": [\n {\n "name": "next"\n }\n ],\n "paths": {\n "@/*": [\n "./*"\n ]\n }\n },\n "include": [\n "next-env.d.ts",\n "**/*.ts",\n "**/*.tsx",\n ".next/types/**/*.ts",\n ".next/dev/types/**/*.ts"\n ],\n "exclude": [\n "node_modules"\n ]\n}\n' }, { "path": "components/account-iframe.tsx", "kind": "text", "content": '"use client";\n\nimport { CimplifyAccount } from "@cimplify/sdk/react";\nimport { brand } from "@/lib/brand";\n\n/**\n * Cimplify Account portal \u2014 iframe-mounted UI hosted by Cimplify Link.\n * Handles sign-in, sign-up, OTP, addresses, payment methods, sessions,\n * and order history. The iframe owns auth state; we just choose which\n * `section` to land on.\n *\n * `merchantName` is passed so the embedded widget can render scoping\n * affordances ("Showing your account with Akua\'s Bakery only.") and\n * enforce the per-merchant data contract \u2014 orders/subs filter to this\n * business, cross-merchant surfaces are hidden.\n */\nexport function AccountIframe({ section }: { section?: string }) {\n return <CimplifyAccount section={section} merchantName={brand.name} />;\n}\n' }, { "path": "components/nav-link.tsx", "kind": "text", "content": '"use client";\n\nimport Link from "next/link";\nimport { usePathname } from "next/navigation";\n\nexport function NavLink({ href, children }: { href: string; children: React.ReactNode }) {\n const pathname = usePathname();\n const active = pathname === href;\n return (\n <Link\n href={href}\n className={[\n "text-[13px] font-medium tracking-wide transition-colors",\n active ? "text-primary" : "text-muted-foreground hover:text-foreground",\n ].join(" ")}\n >\n {children}\n </Link>\n );\n}\n' }, { "path": "components/collection-strip.tsx", "kind": "text", "content": 'import Link from "next/link";\nimport type { Collection, Product } from "@cimplify/sdk";\nimport { StoreProductCard } from "./store-product-card";\n\ninterface CollectionStripProps {\n collection: Collection;\n products: Product[];\n collectionHref?: string;\n}\n\n/**\n * Horizontal strip of products under a collection title. Cards come from the\n * SDK so every variant (Food, Bundle, Composite, Service, \u2026) renders\n * correctly; clicks open the shared URL-driven product modal.\n */\nexport function CollectionStrip({ collection, products, collectionHref }: CollectionStripProps) {\n if (products.length === 0) return null;\n return (\n <section className="max-w-7xl mx-auto px-6 sm:px-8 pt-12">\n <header className="grid grid-cols-[1fr_auto] items-end gap-4 mb-5">\n <h2 className="font-serif text-[28px] font-semibold m-0">{collection.name}</h2>\n {collectionHref && (\n <Link\n href={collectionHref}\n className="text-[13px] font-semibold text-primary hover:underline"\n >\n See all \u2192\n </Link>\n )}\n {collection.description && (\n <p className="col-span-full m-0 mt-1 text-sm text-muted-foreground">\n {collection.description}\n </p>\n )}\n </header>\n <div className="grid grid-flow-col auto-cols-[minmax(220px,1fr)] gap-4 overflow-x-auto snap-x snap-mandatory pb-2">\n {products.slice(0, 8).map((p) => (\n <div key={p.id} className="snap-start">\n <StoreProductCard product={p} />\n </div>\n ))}\n </div>\n </section>\n );\n}\n' }, { "path": "components/category-grid.tsx", "kind": "text", "content": '"use client";\n\nimport { useRouter } from "next/navigation";\nimport { CategoryGrid as SdkCategoryGrid } from "@cimplify/sdk/react";\nimport type { Category } from "@cimplify/sdk";\n\n/**\n * Homepage category tiles \u2014 defers to the SDK\'s <CategoryGrid/> for layout\n * and accessibility, and routes selections to /categories/:slug.\n */\nexport function CategoryGrid({ categories }: { categories?: Category[] }) {\n const router = useRouter();\n return (\n <section className="max-w-7xl mx-auto px-6 sm:px-8 pt-14">\n <h2 className="font-serif text-[28px] font-semibold m-0 mb-5">Browse the menu</h2>\n <SdkCategoryGrid\n categories={categories}\n onSelect={(c) => router.push(`/categories/${c.slug}`)}\n classNames={{\n item: "flex flex-col gap-1 p-6 bg-card border border-border rounded-2xl cursor-pointer text-left transition-all hover:border-primary hover:-translate-y-0.5",\n name: "font-serif text-lg font-semibold text-foreground",\n description: "text-xs text-muted-foreground",\n count: "text-xs text-muted-foreground mt-1",\n }}\n />\n </section>\n );\n}\n' }, { "path": "components/providers.tsx", "kind": "text", "content": '"use client";\n\nimport { useMemo, type ReactNode } from "react";\nimport { createCimplifyClient } from "@cimplify/sdk";\nimport { CimplifyProvider, CartDrawerProvider } from "@cimplify/sdk/react";\n\n// Same-origin client \u2014 every request goes through the Next.js rewrite in\n// next.config.ts, so no CORS preflight ever hits the browser.\nexport function Providers({ children }: { children: ReactNode }) {\n const client = useMemo(() => {\n const baseUrl =\n typeof window !== "undefined" ? window.location.origin : "http://127.0.0.1:8787";\n const publicKey = process.env.NEXT_PUBLIC_CIMPLIFY_PUBLIC_KEY ?? "mock-dev";\n return createCimplifyClient({\n baseUrl,\n publicKey,\n suppressPublicKeyWarning: true,\n });\n }, []);\n\n return (\n <CimplifyProvider client={client}>\n <CartDrawerProvider>{children}</CartDrawerProvider>\n </CimplifyProvider>\n );\n}\n' }, { "path": "components/store-product-card.tsx", "kind": "text", "content": '"use client";\n\nimport Link from "next/link";\nimport {\n CardVariant,\n FoodProductCard,\n RetailProductCard,\n WholesaleProductCard,\n DigitalProductCard,\n BundleProductCard,\n CompositeProductCard,\n StandardServiceCard,\n CompactServiceCard,\n ScheduleServiceCard,\n RentalServiceCard,\n AccommodationCard,\n LeaseServiceCard,\n SubscriptionCard,\n} from "@cimplify/sdk/react";\nimport type { CardLayoutProps } from "@cimplify/sdk/react";\nimport type { Product } from "@cimplify/sdk";\nimport { PRODUCT_TYPE, RENDER_HINT, DURATION_UNIT } from "@cimplify/sdk";\n\nconst RENTAL_UNITS = new Set<string>([DURATION_UNIT.Days, DURATION_UNIT.Hours]);\nconst LEASE_UNITS = new Set<string>([DURATION_UNIT.Weeks, DURATION_UNIT.Months, DURATION_UNIT.Years]);\n\nconst VARIANT_CARDS: Record<CardVariant, React.ComponentType<CardLayoutProps>> = {\n [CardVariant.Food]: FoodProductCard,\n [CardVariant.Retail]: RetailProductCard,\n [CardVariant.Wholesale]: WholesaleProductCard,\n [CardVariant.Digital]: DigitalProductCard,\n [CardVariant.Bundle]: BundleProductCard,\n [CardVariant.Composite]: CompositeProductCard,\n [CardVariant.Standard]: StandardServiceCard,\n [CardVariant.Compact]: CompactServiceCard,\n [CardVariant.Schedule]: ScheduleServiceCard,\n [CardVariant.Rental]: RentalServiceCard,\n [CardVariant.Accommodation]: AccommodationCard,\n [CardVariant.Lease]: LeaseServiceCard,\n [CardVariant.Subscription]: SubscriptionCard,\n};\n\nfunction resolveVariant(p: Product): CardVariant {\n if (p.type === PRODUCT_TYPE.Bundle) return CardVariant.Bundle;\n if (p.type === PRODUCT_TYPE.Composite) return CardVariant.Composite;\n if (p.quantity_pricing && p.quantity_pricing.length > 1) return CardVariant.Wholesale;\n if (p.type === PRODUCT_TYPE.Digital) return CardVariant.Digital;\n if (p.type === PRODUCT_TYPE.Service) {\n if (p.duration_unit && RENTAL_UNITS.has(p.duration_unit)) return CardVariant.Rental;\n if (p.duration_unit === DURATION_UNIT.Nights) return CardVariant.Accommodation;\n if (p.duration_unit && LEASE_UNITS.has(p.duration_unit)) return CardVariant.Lease;\n if (p.billing_plans && p.billing_plans.length > 0 && !p.duration_minutes) return CardVariant.Subscription;\n return CardVariant.Standard;\n }\n if (p.render_hint === RENDER_HINT.Food) return CardVariant.Food;\n return CardVariant.Retail;\n}\n\ninterface Props {\n product: Product;\n /** Override the auto-detected card variant. */\n variant?: CardVariant;\n}\n\n/**\n * Variant-aware product card that opens the URL-driven product modal on\n * click. Uses `next/link` with `?product=<slug>` so the link is statically\n * pre-renderable \u2014 no `useSearchParams` dependency means cards don\'t\n * become dynamic islands. The modal (which already reads `useSearchParams`\n * inside a Suspense boundary in the root layout) handles the rest.\n */\nexport function StoreProductCard({ product, variant }: Props) {\n const slug = product.slug || product.id;\n const Card = VARIANT_CARDS[variant ?? resolveVariant(product)];\n const href = `?product=${encodeURIComponent(slug)}`;\n\n return (\n <Card\n product={product}\n renderLink={({ className, children }) => (\n <Link href={href} scroll={false} prefetch={false} className={className}>\n {children}\n </Link>\n )}\n />\n );\n}\n' }, { "path": "components/account-pill.tsx", "kind": "text", "content": '"use client";\n\nimport { useEffect, useRef } from "react";\nimport Link from "next/link";\nimport { CimplifySignInButton, useCimplifySession } from "@cimplify/sdk/react";\nimport { signInSilent } from "@cimplify/sdk";\n\nconst CLIENT_ID = process.env.NEXT_PUBLIC_CIMPLIFY_CLIENT_ID ?? "";\n\n// Attempts silent SSO on mount before showing the button so returning\n// shoppers don\'t see a flash of "Sign in" before landing as signed in.\nexport function AccountPill() {\n const { session, loading, refresh } = useCimplifySession();\n const triedSilent = useRef(false);\n\n useEffect(() => {\n if (triedSilent.current || session || !CLIENT_ID) return;\n triedSilent.current = true;\n void signInSilent({\n clientId: CLIENT_ID,\n redirectUri: `${window.location.origin}/auth/callback`,\n }).then((r) => {\n if (r.ok) refresh();\n });\n }, [session, refresh]);\n\n if (loading || !CLIENT_ID) return <span className="h-9 w-24" aria-hidden />;\n\n if (session) {\n const first = session.name?.split(/\\s+/)[0] ?? "Account";\n return (\n <Link\n href="/account"\n className="text-[13px] font-medium tracking-wide text-foreground hover:text-primary transition-colors"\n >\n Hi, {first}\n </Link>\n );\n }\n\n return (\n <CimplifySignInButton\n clientId={CLIENT_ID}\n redirectUri={`${typeof window !== "undefined" ? window.location.origin : ""}/auth/callback`}\n variant="text"\n onSuccess={() => refresh()}\n />\n );\n}\n' }, { "path": "components/hero.tsx", "kind": "text", "content": 'interface HeroProps {\n badge?: string;\n title: string;\n subtitle?: string;\n}\n\nexport function Hero({ badge, title, subtitle }: HeroProps) {\n return (\n <section className="px-6 sm:px-8 py-16 text-center bg-gradient-to-b from-accent to-background">\n {badge && (\n <span className="inline-block mb-4 px-3.5 py-1.5 rounded-full bg-card border border-accent text-accent-foreground text-[11px] font-semibold uppercase tracking-[0.12em]">\n {badge}\n </span>\n )}\n <h1 className="font-serif text-[clamp(2.25rem,5vw,3.5rem)] font-semibold m-0 -tracking-[0.02em]">\n {title}\n </h1>\n {subtitle && (\n <p className="mx-auto mt-2 max-w-xl text-base text-muted-foreground">\n {subtitle}\n </p>\n )}\n </section>\n );\n}\n' }, { "path": "components/footer.tsx", "kind": "text", "content": 'import Link from "next/link";\nimport { brand } from "@/lib/brand";\n\nconst ICONS: Record<string, React.ReactNode> = {\n instagram: (\n <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5" aria-hidden className="w-5 h-5">\n <rect x="3" y="3" width="18" height="18" rx="5" />\n <circle cx="12" cy="12" r="4" />\n <circle cx="17.5" cy="6.5" r="0.75" fill="currentColor" />\n </svg>\n ),\n x: (\n <svg viewBox="0 0 24 24" fill="currentColor" aria-hidden className="w-5 h-5">\n <path d="M18 2h3l-7.5 8.6L22 22h-6.6l-5-6.5L4 22H1l8-9.2L1.4 2H8l4.6 6 5.4-6z" />\n </svg>\n ),\n tiktok: (\n <svg viewBox="0 0 24 24" fill="currentColor" aria-hidden className="w-5 h-5">\n <path d="M16 3v3.5a4.5 4.5 0 0 0 4.5 4.5V14a7.5 7.5 0 0 1-4.5-1.5V16a5 5 0 1 1-5-5v3a2 2 0 1 0 2 2V3z" />\n </svg>\n ),\n facebook: (\n <svg viewBox="0 0 24 24" fill="currentColor" aria-hidden className="w-5 h-5">\n <path d="M14 9V7a1 1 0 0 1 1-1h2V3h-3a4 4 0 0 0-4 4v2H8v3h2v9h3v-9h2.5l.5-3H13z" />\n </svg>\n ),\n youtube: (\n <svg viewBox="0 0 24 24" fill="currentColor" aria-hidden className="w-5 h-5">\n <path d="M22.5 6.5a2.6 2.6 0 0 0-1.8-1.8C19 4.2 12 4.2 12 4.2s-7 0-8.7.5A2.6 2.6 0 0 0 1.5 6.5C1 8.2 1 12 1 12s0 3.8.5 5.5a2.6 2.6 0 0 0 1.8 1.8C5 19.8 12 19.8 12 19.8s7 0 8.7-.5a2.6 2.6 0 0 0 1.8-1.8c.5-1.7.5-5.5.5-5.5s0-3.8-.5-5.5zM10 15.5v-7l6 3.5-6 3.5z" />\n </svg>\n ),\n linkedin: (\n <svg viewBox="0 0 24 24" fill="currentColor" aria-hidden className="w-5 h-5">\n <path d="M4 4h4v16H4zM6 2.5a2 2 0 1 0 0 4 2 2 0 0 0 0-4zM10 8h4v2.5h.1c.6-1.1 2-2.5 4-2.5 4 0 4.9 2.6 4.9 6V20h-4v-5c0-1.5-.5-3-2.3-3-1.7 0-2.5 1.3-2.5 3v5h-4z" />\n </svg>\n ),\n whatsapp: (\n <svg viewBox="0 0 24 24" fill="currentColor" aria-hidden className="w-5 h-5">\n <path d="M12 2a10 10 0 0 0-8.6 15l-1.4 5 5.2-1.4A10 10 0 1 0 12 2zm5 14.2c-.2.6-1.2 1.2-1.7 1.2-.5.1-1.1.1-1.7-.1-.4-.1-.9-.3-1.5-.6a8.4 8.4 0 0 1-3.7-3.4c-.7-1-1-1.8-1-2.5 0-.7.4-1.1.6-1.3.2-.2.4-.2.5-.2h.4c.1 0 .3 0 .4.3l.6 1.4c.1.2 0 .3 0 .4l-.3.4-.3.3c-.1.1-.2.2-.1.4.2.4.7 1.1 1.4 1.8.9.8 1.7 1.1 1.9 1.2.2.1.3.1.5-.1l.6-.7c.2-.2.3-.2.5-.1l1.4.7c.2.1.3.2.4.3.1.2.1.6 0 1z" />\n </svg>\n ),\n};\n\nconst FALLBACK_ICON = (\n <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5" aria-hidden className="w-5 h-5">\n <circle cx="12" cy="12" r="9" />\n </svg>\n);\n\nexport async function Footer() {\n const year = new Date().getFullYear();\n return (\n <footer className="mt-12 px-6 sm:px-8 py-10 text-xs text-muted-foreground border-t border-border bg-card">\n <div className="max-w-7xl mx-auto">\n <div className="grid gap-10 md:grid-cols-[1.4fr_repeat(4,1fr)]">\n <div>\n <p className="font-serif text-2xl text-foreground m-0 mb-2">{brand.name}</p>\n <p className="leading-relaxed mb-4 max-w-sm">{brand.footer.blurb}</p>\n <address className="not-italic space-y-1">\n <p className="m-0">{brand.contact.address}</p>\n <p className="m-0">\n <a\n href={`tel:${brand.contact.phoneTel}`}\n className="hover:text-foreground transition-colors"\n >\n {brand.contact.phone}\n </a>\n </p>\n <p className="m-0">\n <a\n href={`mailto:${brand.contact.email}`}\n className="hover:text-foreground transition-colors"\n >\n {brand.contact.email}\n </a>\n </p>\n <p className="m-0">{brand.contact.hours}</p>\n </address>\n <div className="flex items-center gap-3 mt-5">\n {brand.socials.map((s) => (\n <a\n key={s.label}\n href={s.href}\n aria-label={s.label}\n target="_blank"\n rel="noopener noreferrer"\n className="inline-flex items-center justify-center w-9 h-9 rounded-full border border-border text-muted-foreground hover:text-foreground hover:border-foreground transition-colors"\n >\n {(s.icon && ICONS[s.icon]) ?? FALLBACK_ICON}\n </a>\n ))}\n </div>\n </div>\n {brand.footer.sitemap.map((section) => (\n <nav key={section.title} aria-labelledby={`footer-${section.title}`}>\n <p\n id={`footer-${section.title}`}\n className="font-semibold text-foreground mb-3 text-[13px] uppercase tracking-[0.08em]"\n >\n {section.title}\n </p>\n <ul className="space-y-2 m-0 p-0 list-none">\n {section.links.map((link) => (\n <li key={link.label}>\n <Link\n href={link.href}\n className="hover:text-foreground transition-colors"\n >\n {link.label}\n </Link>\n </li>\n ))}\n </ul>\n </nav>\n ))}\n </div>\n <div className="mt-12 pt-6 border-t border-border flex flex-col sm:flex-row items-center justify-between gap-3">\n <p className="m-0">\xA9 {year} {brand.name}. All rights reserved.</p>\n {brand.footer.poweredBy && (\n <p className="m-0 inline-flex items-center gap-1.5">\n <span className="text-muted-foreground/80">Powered by</span>\n <a\n href={brand.footer.poweredBy.href}\n target="_blank"\n rel="noopener noreferrer"\n aria-label={brand.footer.poweredBy.label}\n className="inline-flex items-center gap-1 font-serif text-foreground hover:text-primary transition-colors"\n >\n <span className="font-semibold tracking-tight">{brand.footer.poweredBy.label}</span>\n <svg\n viewBox="0 0 12 12"\n aria-hidden\n className="w-3 h-3 opacity-70"\n fill="none"\n stroke="currentColor"\n strokeWidth="1.5"\n >\n <path d="M3 9L9 3M9 3H4M9 3v5" strokeLinecap="round" strokeLinejoin="round" />\n </svg>\n </a>\n </p>\n )}\n </div>\n </div>\n </footer>\n );\n}\n' }, { "path": "components/product-modal.tsx", "kind": "text", "content": '"use client";\n\nimport { useEffect } from "react";\nimport Image from "next/image";\nimport { useRouter, useSearchParams, usePathname } from "next/navigation";\nimport { ProductSheet, useProduct, useCart } from "@cimplify/sdk/react";\n\n/**\n * URL-driven product modal. Reads `?product=<slug>` and renders the SDK\'s\n * `<ProductSheet/>` \u2014 vertical layout with image-on-top, then header, then\n * the variant/add-on/composite/bundle customizer. Closing the modal clears\n * the search param. Deep-linkable and survives reloads.\n */\nexport function ProductModal() {\n const router = useRouter();\n const pathname = usePathname();\n const searchParams = useSearchParams();\n const slug = searchParams?.get("product") ?? null;\n\n const { product } = useProduct(slug ?? "", { enabled: Boolean(slug) });\n const { addItem } = useCart();\n\n useEffect(() => {\n if (!slug) return;\n const original = document.body.style.overflow;\n document.body.style.overflow = "hidden";\n return () => {\n document.body.style.overflow = original;\n };\n }, [slug]);\n\n useEffect(() => {\n if (!slug) return;\n const onKey = (e: KeyboardEvent) => {\n if (e.key === "Escape") close();\n };\n window.addEventListener("keydown", onKey);\n return () => window.removeEventListener("keydown", onKey);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [slug]);\n\n if (!slug) return null;\n\n function close() {\n const next = new URLSearchParams(searchParams?.toString() ?? "");\n next.delete("product");\n const qs = next.toString();\n router.replace(qs ? `${pathname}?${qs}` : pathname, { scroll: false });\n }\n\n return (\n <div\n role="dialog"\n aria-modal="true"\n onClick={close}\n className="fixed inset-0 z-[100] flex items-end sm:items-center justify-center sm:p-6 bg-foreground/50 backdrop-blur-sm"\n >\n <div\n onClick={(e) => e.stopPropagation()}\n className="relative w-full sm:max-w-lg max-h-[92vh] overflow-auto bg-card sm:rounded-3xl rounded-t-3xl shadow-2xl"\n >\n <button\n onClick={close}\n aria-label="Close product details"\n className="absolute top-4 right-4 z-10 w-9 h-9 rounded-full bg-card border border-border text-sm cursor-pointer transition-colors hover:bg-muted"\n >\n \u2715\n </button>\n {product ? (\n <ProductSheet\n product={product}\n onClose={close}\n onAddToCart={async (p, qty, options) => {\n await addItem(p, qty, options);\n close();\n }}\n renderImage={({ src, alt, className }) => (\n <Image\n src={src}\n alt={alt}\n width={1200}\n height={900}\n className={className}\n style={{ width: "100%", height: "auto", objectFit: "cover" }}\n priority\n />\n )}\n classNames={{\n root: "p-6 sm:p-8 gap-4",\n image: "rounded-2xl overflow-hidden -mx-6 sm:-mx-8 -mt-6 sm:-mt-8 mb-2",\n header: "flex items-baseline justify-between gap-4",\n name: "font-serif text-2xl font-semibold m-0",\n price: "text-lg font-semibold text-primary",\n description: "text-sm text-muted-foreground leading-relaxed",\n customizer: "pt-2",\n }}\n />\n ) : (\n <div className="p-8 text-center text-muted-foreground">Loading\u2026</div>\n )}\n </div>\n </div>\n );\n}\n' }, { "path": "components/cart-drawer.tsx", "kind": "text", "content": '"use client";\n\nimport { useRouter } from "next/navigation";\nimport { CartDrawer as SdkCartDrawer } from "@cimplify/sdk/react";\n\n/**\n * Side-drawer cart. Auto-opens when an item is added (via\n * `<CartDrawerProvider>` in `providers.tsx`). The header\'s cart pill\n * also calls `useCartDrawer().open()` to reveal it on click.\n */\nexport function CartDrawer() {\n const router = useRouter();\n return <SdkCartDrawer onCheckout={() => router.push("/checkout")} />;\n}\n' }, { "path": "components/json-ld.tsx", "kind": "text", "content": 'import { brand } from "@/lib/brand";\nimport { getSiteUrl } from "@/lib/site-url";\n\n/**\n * Streams the organization JSON-LD script tag in async so it doesn\'t block\n * the rest of the layout shell. `getSiteUrl` reads request headers, and\n * any await on dynamic data inside `RootLayout` makes Next 16 mark the\n * whole route as blocking.\n */\nexport async function OrganizationJsonLd(): Promise<React.ReactElement> {\n const siteUrl = await getSiteUrl();\n const ld = {\n "@context": "https://schema.org",\n "@type": brand.schemaType,\n name: brand.name,\n url: siteUrl,\n description: brand.description,\n email: brand.contact.email,\n telephone: brand.contact.phoneTel,\n address: {\n "@type": "PostalAddress",\n streetAddress: brand.contact.streetAddress,\n addressLocality: brand.contact.city,\n addressCountry: brand.contact.countryCode,\n },\n sameAs: brand.socials.map((s) => s.href),\n };\n return (\n <script\n type="application/ld+json"\n dangerouslySetInnerHTML={{ __html: JSON.stringify(ld) }}\n />\n );\n}\n' }, { "path": "components/mobile-nav.tsx", "kind": "text", "content": '"use client";\n\nimport { useEffect, useState } from "react";\nimport Link from "next/link";\nimport { brand } from "@/lib/brand";\n\n/**\n * Hamburger button + slide-in drawer for narrow viewports. Header hides\n * its inline nav links below `sm` and renders this in their place; the\n * cart pill stays in the header chrome.\n */\nexport function MobileNav() {\n const [open, setOpen] = useState(false);\n\n useEffect(() => {\n if (!open) return;\n const onKey = (event: KeyboardEvent) => {\n if (event.key === "Escape") setOpen(false);\n };\n document.addEventListener("keydown", onKey);\n const previousOverflow = document.body.style.overflow;\n document.body.style.overflow = "hidden";\n return () => {\n document.removeEventListener("keydown", onKey);\n document.body.style.overflow = previousOverflow;\n };\n }, [open]);\n\n return (\n <>\n <button\n type="button"\n onClick={() => setOpen(true)}\n aria-label="Open menu"\n aria-expanded={open}\n aria-controls="mobile-nav-drawer"\n className="grid place-items-center w-11 h-11 -mr-2 rounded-md text-foreground hover:bg-muted transition-colors"\n >\n <svg\n width="20"\n height="20"\n viewBox="0 0 24 24"\n fill="none"\n stroke="currentColor"\n strokeWidth="2"\n strokeLinecap="round"\n strokeLinejoin="round"\n aria-hidden="true"\n >\n <line x1="3" y1="6" x2="21" y2="6" />\n <line x1="3" y1="12" x2="21" y2="12" />\n <line x1="3" y1="18" x2="21" y2="18" />\n </svg>\n </button>\n\n {open ? (\n <div className="fixed inset-0 z-50 sm:hidden">\n <button\n type="button"\n onClick={() => setOpen(false)}\n aria-label="Close menu"\n className="absolute inset-0 bg-background/80 backdrop-blur-sm"\n />\n <nav\n id="mobile-nav-drawer"\n aria-label="Mobile navigation"\n className="absolute inset-y-0 right-0 w-[85%] max-w-sm flex flex-col bg-background border-l border-border shadow-2xl"\n >\n <div className="flex items-center justify-between px-6 py-4 border-b border-border">\n <span className="text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground">\n Menu\n </span>\n <button\n type="button"\n onClick={() => setOpen(false)}\n aria-label="Close menu"\n className="grid place-items-center w-11 h-11 -mr-2 rounded-md text-foreground hover:bg-muted transition-colors"\n >\n <svg\n width="20"\n height="20"\n viewBox="0 0 24 24"\n fill="none"\n stroke="currentColor"\n strokeWidth="2"\n strokeLinecap="round"\n strokeLinejoin="round"\n aria-hidden="true"\n >\n <line x1="18" y1="6" x2="6" y2="18" />\n <line x1="6" y1="6" x2="18" y2="18" />\n </svg>\n </button>\n </div>\n <ul className="flex flex-col gap-1 px-3 py-4">\n {brand.header.nav.map((link) => (\n <li key={link.href}>\n <Link\n href={link.href}\n onClick={() => setOpen(false)}\n className="block px-3 py-3 rounded-md text-base font-medium text-foreground hover:bg-muted transition-colors"\n >\n {link.label}\n </Link>\n </li>\n ))}\n </ul>\n </nav>\n </div>\n ) : null}\n </>\n );\n}\n' }, { "path": "components/header.tsx", "kind": "text", "content": 'import Link from "next/link";\nimport { Suspense } from "react";\nimport { NavLink } from "./nav-link";\nimport { CartPill, CartPillSkeleton } from "./cart-pill";\nimport { MobileNav } from "./mobile-nav";\nimport { AccountPill } from "./account-pill";\nimport { brand } from "@/lib/brand";\n\n/**\n * Server-rendered header chrome. Brand mark + nav layout streams from the\n * cache; the active-link styling and live cart count are dynamic islands\n * mounted in their own Suspense boundaries so the chrome never blocks.\n */\nexport function Header() {\n return (\n <header className="sticky top-0 z-30 flex items-center justify-between px-6 sm:px-8 py-4 border-b border-border bg-background/90 backdrop-blur-md">\n <Link href="/" className="flex items-baseline gap-2">\n <span className="font-serif text-[22px] font-semibold -tracking-[0.02em]">\n {brand.shortName}\n </span>\n <span className="hidden sm:inline text-[11px] font-medium uppercase tracking-[0.12em] text-muted-foreground">\n {brand.microTag}\n </span>\n </Link>\n <div className="flex items-center gap-3 sm:gap-6">\n <nav className="hidden sm:flex items-center gap-6">\n {brand.header.nav.map((link) => (\n <Suspense key={link.href} fallback={<NavLinkFallback>{link.label}</NavLinkFallback>}>\n <NavLink href={link.href}>{link.label}</NavLink>\n </Suspense>\n ))}\n </nav>\n <AccountPill />\n <Suspense fallback={<CartPillSkeleton />}>\n <CartPill />\n </Suspense>\n <div className="sm:hidden">\n <MobileNav />\n </div>\n </div>\n </header>\n );\n}\n\nfunction NavLinkFallback({ children }: { children: React.ReactNode }) {\n return (\n <span className="text-[13px] font-medium tracking-wide text-muted-foreground">\n {children}\n </span>\n );\n}\n' }, { "path": "components/cart-pill.tsx", "kind": "text", "content": '"use client";\n\nimport { useCartDrawer } from "@cimplify/sdk/react";\nimport { useCartCount } from "@/lib/cart";\n\n/**\n * Cart pill \u2014 dynamic island. Reads the live cart count via the SDK and\n * opens the side cart drawer on click (instead of navigating to /cart).\n * Wrap in `<Suspense fallback={<CartPillSkeleton/>}>` so the cached\n * header chrome streams without blocking on the cart fetch.\n */\nexport function CartPill() {\n const { count } = useCartCount();\n const { open } = useCartDrawer();\n return (\n <button\n type="button"\n onClick={open}\n aria-label={`Open cart, ${count} ${count === 1 ? "item" : "items"}`}\n className="inline-flex items-center gap-1.5 px-4 py-2.5 sm:py-2 rounded-full bg-foreground text-background text-xs font-semibold tracking-wide transition-transform hover:scale-105 cursor-pointer"\n >\n Cart \xB7 {count}\n </button>\n );\n}\n\nexport function CartPillSkeleton() {\n return (\n <span\n aria-hidden\n className="inline-flex items-center gap-1.5 px-4 py-2.5 sm:py-2 rounded-full bg-foreground/80 text-background text-xs font-semibold tracking-wide"\n >\n Cart \xB7 \u2026\n </span>\n );\n}\n' }, { "path": "components/policy-page.tsx", "kind": "text", "content": 'import type { BrandPolicySection } from "@/lib/brand";\n\ninterface PolicyShape {\n eyebrow: string;\n title: string;\n lastUpdated?: string;\n sections: BrandPolicySection[];\n}\n\n/**\n * Shared layout for shipping / returns / accessibility / terms / privacy.\n * Reads a `{ eyebrow, title, lastUpdated, sections[] }` block from brand.\n */\nexport function PolicyPage({ policy }: { policy: PolicyShape }) {\n return (\n <article className="max-w-3xl mx-auto px-6 sm:px-8 py-16 prose prose-lg max-w-none">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2 not-prose">\n {policy.eyebrow}\n </p>\n <h1 className="text-[clamp(2.25rem,5vw,3.5rem)] font-semibold mb-2 -tracking-[0.02em]">\n {policy.title}\n </h1>\n {policy.lastUpdated && (\n <p className="text-sm text-muted-foreground not-prose mb-10">\n Last updated: {policy.lastUpdated}\n </p>\n )}\n <section className="space-y-5 leading-relaxed text-foreground/90">\n {policy.sections.map((s) => (\n <div key={s.heading}>\n <h2 className="text-2xl font-semibold mt-0">{s.heading}</h2>\n {typeof s.body === "string" ? (\n <p>{s.body}</p>\n ) : (\n <>\n <p>{s.body.intro}</p>\n <ul className="list-disc pl-6 space-y-2">\n {s.body.bullets.map((b) => (\n <li key={b}>{b}</li>\n ))}\n </ul>\n </>\n )}\n </div>\n ))}\n </section>\n </article>\n );\n}\n' }], "storefront-auto": [{ "path": "AGENTS.md", "kind": "text", "content": '# AGENTS.md \u2014 Auto-parts storefront template\n\nIf you are an AI agent working on this storefront, **start here.**\n\n## TL;DR for rebranding\n\n1. **Edit `lib/brand.ts`** \u2014 every visible string, plus the `fitments` make/model/year tree.\n2. **Edit `app/globals.css`** \u2014 `@theme { \u2026 }` block for palette + radius + font references.\n3. **Edit `.env.local`** \u2014 `NEXT_PUBLIC_CIMPLIFY_*` env vars.\n\n## Aesthetic\n\n- **Inter + JetBrains Mono** \u2014 clean modern sans, mono-spaced labels for spec-feel.\n- **Carbon-black foreground + sport-red accent.**\n- **Sharp corners**: `0.5rem` \u2014 workshop-modern.\n- **`AutoPartsStore`** is the Schema.org `@type` (set in `brand.schemaType`).\n\n## Page surface\n\n```\napp/\n page.tsx AutoHero + FitmentFinder + TrustBar + Most ordered\n grid + ServiceBrief + Newsletter\n shop/page.tsx SDK <CataloguePage/>. Reads `?fits=<tag>` to\n filter by fitment tag.\n search/page.tsx Search\n collections/[slug]/page.tsx Collection landing\n categories/[slug]/page.tsx Category landing\n products/[slug]/page.tsx Full product detail page (Product JSON-LD)\n cart/page.tsx, checkout/page.tsx, orders/[id]/page.tsx SDK\n account/* + login/signup\n contact/, track-order/, about, faq, terms, privacy, shipping, returns,\n accessibility/, sitemap-page/ Brand-driven content pages\n```\n\n## File \u2194 brand-field map\n\n| File | Reads from `brand` |\n|---|---|\n| `app/layout.tsx` | identity, contact, socials, schemaType (AutoPartsStore JSON-LD) |\n| `app/page.tsx` | `brand.hero`, `brand.fitments`, `brand.serviceBrief`, `brand.newsletter` |\n| `app/about/page.tsx` | `brand.about` |\n| `app/faq/page.tsx` | `brand.faq` |\n| `app/terms/page.tsx` | `brand.terms` |\n| `app/privacy/page.tsx` | `brand.privacy` |\n| `app/shipping/page.tsx` | `brand.shipping` |\n| `app/returns/page.tsx` | `brand.returns` |\n| `app/accessibility/page.tsx` | `brand.accessibility` |\n| `app/contact/page.tsx` | `brand.contactPage`, `brand.contact` |\n| `app/track-order/page.tsx` | `brand.trackOrder` |\n| `app/products/[slug]/page.tsx` | `brand.name`, `brand.currency` |\n| `app/llms.txt/route.ts` | `brand.llms`, contact, currency |\n| `components/auto-hero.tsx` | `brand.hero`, hard-coded trust-chip labels |\n| `components/fitment-finder.tsx` | `brand.fitments` (makes/models/years tree) |\n| `components/service-brief.tsx` | `brand.serviceBrief` (3 cards) |\n| `components/header.tsx`, `components/footer.tsx` | `brand.shortName`, `brand.header.nav`, `brand.footer`, `brand.contact`, `brand.socials` |\n| `components/trust-bar.tsx` | `brand.trustItems` |\n| `components/newsletter.tsx` | `brand.newsletter` |\n\n## Auto-specific notes\n\n- **Fitment is tag-based, not a custom_attribute.** Each product carries `tags: ["fits:toyota", "fits:toyota:corolla"]` etc. or `["fits:universal"]`. The shop page reads `?fits=<tag>` and filters by tag prefix match. Universal-fit products bypass the filter.\n- **Adding a vehicle**: edit `brand.fitments.makes` in `lib/brand.ts`. Add `{ slug, name, models: [...] }`. Slug becomes the URL fragment.\n- **Adding a part with new fitment**: tag the product `fits:<make>` and (optionally) `fits:<make>:<model>`. No schema change needed.\n- **Partner-workshop fitting**: the mock doesn\'t model this; the storefront copy describes it. To wire it, eject the cart drawer and add a "Add fitting (GH\u20B580)" toggle that adds a service line.\n\n## Known TODOs\n\n- Contact form + newsletter signup currently fake their submit. Wire to a real provider.\n- The fitment finder uses `useRouter().push` to a query-string URL; the catalogue page-side filter is left as an exercise for the merchant (read the `fits` param and pass it as a SDK `getProducts({ tags: [...] })` filter).\n\n## Mock seed\n\nWired to `--seed auto` (Driveline Auto Parts). Edit `dev:mock` in `package.json` to preview another seed.\n\n## Customizing SDK components\n\nFor anything beyond `lib/brand.ts` + `app/globals.css`, lean on the SDK\'s prebuilt components rather than reinvent. **Especially for product customization** (variants, add-ons, fitment-tag filtering, services with scheduling) \u2014 the SDK already gets price math, axis matching, tag filtering, and cart payload contracts right. Default to ejecting and restyling:\n\n```bash\ncimplify add cart-drawer\ncimplify add variant-selector\ncimplify add product-page\n```\n\nThen edit the local copy. **Don\'t change the cart payload shape** unless you\'re also touching the SDK mock + backend lens. Full ejection rules and the customizer contract are in the SDK-level [`AGENTS.md`](../../AGENTS.md) \u2192 "Don\'t reinvent product customization".\n\n## Quick start\n\n```bash\nbun install\nbun dev\n```\n\nOpen <http://localhost:3000>.\n' }, { "path": "__tests__/brand.test.ts", "kind": "text", "content": 'import { createBrandSuite } from "@cimplify/sdk/testing/suite";\nimport { brand } from "../lib/brand";\n\ncreateBrandSuite({ brand });\n' }, { "path": "__tests__/cart-flow.test.ts", "kind": "text", "content": 'import { createCartFlowSuite } from "@cimplify/sdk/testing/suite";\nimport { brand } from "../lib/brand";\n\ncreateCartFlowSuite({ seed: brand.mock.seed, businessId: brand.mock.businessId });\n' }, { "path": "__tests__/contract.test.ts", "kind": "text", "content": 'import { createContractSuite } from "@cimplify/sdk/testing/suite";\nimport { brand } from "../lib/brand";\n\ncreateContractSuite({ seed: brand.mock.seed });\n' }, { "path": "lib/auth.ts", "kind": "text", "content": 'import { headers } from "next/headers";\nimport {\n getAccessTokenFromCookieHeader,\n getServerClient,\n getSessionFromCookieHeader,\n type CimplifyClient,\n type CimplifySession,\n} from "@cimplify/sdk/server";\n\nconst CLIENT_ID = process.env.CIMPLIFY_CLIENT_ID ?? "";\nconst AUTH_URL = process.env.CIMPLIFY_AUTH_URL;\n\nconst oidcConfig = { clientId: CLIENT_ID, authUrl: AUTH_URL };\n\nexport async function getSession(): Promise<CimplifySession | null> {\n if (!CLIENT_ID) return null;\n const cookieHeader = (await headers()).get("cookie");\n return getSessionFromCookieHeader(oidcConfig, cookieHeader);\n}\n\n// Returns a Cimplify server client with the signed-in customer\'s access\n// token attached (if any). Use this instead of getServerClient() on pages\n// that need personalized data: orders, subscriptions, price-list pricing.\n// Pages without `revalidate: 0` will share a cache across customers, so\n// only use this on routes that opt out of static caching.\nexport async function getAuthenticatedServerClient(): Promise<CimplifyClient> {\n const cookieHeader = (await headers()).get("cookie");\n const accessToken =\n CLIENT_ID && cookieHeader\n ? getAccessTokenFromCookieHeader(oidcConfig, cookieHeader) ?? undefined\n : undefined;\n return getServerClient({ accessToken });\n}\n\nexport type { CimplifySession } from "@cimplify/sdk/server";\n' }, { "path": "lib/brand.ts", "kind": "text", "content": `/**
|
|
3088
|
+
` }, { "path": "app/contact/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { ContactForm } from "./contact-form";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `Contact \u2014 ${brand.name}`,\n description: brand.contactPage.body,\n};\n\nexport default function ContactPage() {\n const c = brand.contactPage;\n return (\n <article className="max-w-5xl mx-auto px-6 sm:px-8 py-16">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2">\n {c.eyebrow}\n </p>\n <h1 className="font-serif text-[clamp(2.25rem,5vw,3.5rem)] font-semibold mb-4 -tracking-[0.02em]">\n {c.title}\n </h1>\n <p className="text-lg text-muted-foreground max-w-2xl mb-12 leading-relaxed">{c.body}</p>\n\n <div className="grid grid-cols-1 lg:grid-cols-[1.5fr_1fr] gap-10 items-start">\n <ContactForm reasons={c.reasons} />\n <aside className="space-y-5 lg:pl-10 lg:border-l border-border">\n <div>\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-muted-foreground mb-3">\n Direct lines\n </p>\n <ul className="space-y-3 list-none p-0 m-0">\n {c.directLines.map((line) => (\n <li key={line.label}>\n <p className="text-xs text-muted-foreground m-0">{line.label}</p>\n <a\n href={line.href}\n className="text-foreground hover:text-primary transition-colors"\n >\n {line.value}\n </a>\n </li>\n ))}\n </ul>\n </div>\n <div>\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-muted-foreground mb-3">\n Visit\n </p>\n <p className="text-foreground m-0">{brand.contact.address}</p>\n <p className="text-xs text-muted-foreground mt-1">{brand.contact.hours}</p>\n </div>\n </aside>\n </div>\n </article>\n );\n}\n' }, { "path": "app/globals.css", "kind": "text", "content": '@import "tailwindcss";\n\n/* Scan the SDK\'s bundled JS so utility classes used inside its components\n land in the compiled stylesheet alongside our own. */\n@source "../node_modules/@cimplify/sdk/dist";\n\n/* The SDK declares its design tokens with `@theme reference`, meaning the\n consumer must supply the actual values. Warm bakery palette below \u2014 swap\n these to retheme the entire SDK + storefront in one place. */\n@theme {\n --color-background: oklch(0.985 0.007 80);\n --color-foreground: oklch(0.18 0.01 60);\n --color-card: oklch(1 0 0);\n --color-card-foreground: oklch(0.18 0.01 60);\n --color-popover: oklch(1 0 0);\n --color-popover-foreground: oklch(0.18 0.01 60);\n --color-primary: oklch(0.45 0.16 40);\n --color-primary-foreground: oklch(0.99 0 0);\n --color-secondary: oklch(0.95 0.02 80);\n --color-secondary-foreground: oklch(0.25 0.04 50);\n --color-muted: oklch(0.96 0.01 80);\n --color-muted-foreground: oklch(0.5 0.02 60);\n --color-accent: oklch(0.92 0.05 70);\n --color-accent-foreground: oklch(0.3 0.06 40);\n --color-destructive: oklch(0.58 0.24 27);\n --color-destructive-foreground: oklch(0.99 0 0);\n --color-border: oklch(0.9 0.02 80);\n --color-input: oklch(0.92 0.02 80);\n --color-ring: oklch(0.6 0.1 40);\n --radius: 0.75rem;\n}\n\n@layer base {\n html, body {\n margin: 0;\n padding: 0;\n background: var(--color-background);\n color: var(--color-foreground);\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n a { color: inherit; text-decoration: none; }\n h1, h2, h3, h4 {\n font-family: var(--font-serif);\n letter-spacing: -0.01em;\n }\n}\n' }, { "path": "app/categories/[slug]/listing-client.tsx", "kind": "text", "content": '"use client";\n\nimport { ProductGrid } from "@cimplify/sdk/react";\nimport type { Product } from "@cimplify/sdk";\nimport { StoreProductCard } from "@/components/store-product-card";\n\n/**\n * Client island for the category listing. Receives server-fetched products\n * as props (serializable) and owns the `renderCard` function.\n */\nexport function ListingClient({ products }: { products: Product[] }) {\n return (\n <ProductGrid\n products={products}\n emptyMessage="No products in this category yet."\n renderCard={(p) => <StoreProductCard product={p} />}\n />\n );\n}\n' }, { "path": "app/categories/[slug]/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { Suspense } from "react";\nimport Link from "next/link";\nimport { notFound } from "next/navigation";\nimport {\n getServerClient,\n tags,\n type Category,\n type Product,\n} from "@cimplify/sdk/server";\nimport { ListingClient } from "./listing-client";\nimport { brand } from "@/lib/brand";\n\n// See app/products/[slug]/page.tsx for the rationale on generateStaticParams.\nexport async function generateStaticParams() {\n const r = await getServerClient().catalogue.getCategories();\n if (!r.ok || r.value.length === 0) {\n return [{ slug: "__placeholder__" }];\n }\n return r.value.map((c) => ({ slug: c.slug ?? c.id }));\n}\n\nexport const revalidate = 3600;\n\ninterface CategoryData {\n category: Category;\n products: Product[];\n}\n\ntype CategoryResult =\n | { ok: true; data: CategoryData }\n | { ok: false; code: string };\n\nasync function getCategory(slug: string): Promise<CategoryResult> {\n const client = getServerClient();\n const catRes = await client.catalogue.getCategoryBySlug(slug, {\n cacheOptions: { revalidate: 3600, tags: [tags.categories()] },\n });\n if (!catRes.ok) return { ok: false, code: catRes.error.code };\n\n const r = await client.catalogue.getCategoryProducts(catRes.value.id, undefined, {\n cacheOptions: {\n revalidate: 3600,\n tags: [\n tags.category(catRes.value.id),\n tags.categoryProducts(catRes.value.id),\n ],\n },\n });\n const products = r.ok\n ? ((r.value as { items?: Product[] }).items ?? (r.value as Product[]))\n : [];\n return { ok: true, data: { category: catRes.value, products } };\n}\n\nexport async function generateMetadata({\n params,\n}: {\n params: Promise<{ slug: string }>;\n}): Promise<Metadata> {\n const { slug } = await params;\n const result = await getCategory(slug);\n if (!result.ok) return {};\n const data = result.data;\n return {\n title: `${data.category.name} \u2014 ${brand.name}`,\n description: data.category.description ?? undefined,\n };\n}\n\nexport default async function CategoryPage({\n params,\n}: {\n params: Promise<{ slug: string }>;\n}) {\n return (\n <Suspense fallback={<CategorySkeleton />}>\n <CategoryContent params={params} />\n </Suspense>\n );\n}\n\nasync function CategoryContent({\n params,\n}: {\n params: Promise<{ slug: string }>;\n}) {\n const { slug } = await params;\n const result = await getCategory(slug);\n if (!result.ok) {\n if (result.code === "NOT_FOUND") notFound();\n return <CategorySkeleton />;\n }\n const { category, products } = result.data;\n return (\n <section className="max-w-7xl mx-auto px-6 sm:px-8 pt-12">\n <header className="mb-8 text-center">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2">\n Category\n </p>\n <h1 className="font-serif text-[clamp(2rem,4vw,2.75rem)] font-semibold mb-2">\n {category.name}\n </h1>\n {category.description && (\n <p className="mx-auto mb-2 max-w-xl text-muted-foreground">\n {category.description}\n </p>\n )}\n <p className="text-sm text-muted-foreground">\n {products.length} item{products.length === 1 ? "" : "s"}\n </p>\n </header>\n <ListingClient products={products} />\n {products.length === 0 && (\n <p className="text-center mt-8">\n <Link href="/" className="text-primary font-semibold">\n \u2190 Back home\n </Link>\n </p>\n )}\n </section>\n );\n}\n\nfunction CategorySkeleton() {\n return (\n <section className="max-w-7xl mx-auto px-6 sm:px-8 pt-12">\n <header className="mb-8 text-center">\n <div className="mx-auto h-3 w-20 bg-muted rounded mb-2 animate-pulse" />\n <div className="mx-auto h-10 w-64 bg-muted rounded mb-2 animate-pulse" />\n <div className="mx-auto h-4 w-80 bg-muted rounded animate-pulse" />\n </header>\n <div className="grid grid-cols-2 md:grid-cols-3 gap-4">\n {Array.from({ length: 6 }).map((_, i) => (\n <div key={i} className="aspect-square bg-muted rounded-2xl animate-pulse" />\n ))}\n </div>\n </section>\n );\n}\n' }, { "path": "app/privacy/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `Privacy Policy \u2014 ${brand.name}`,\n description: `How ${brand.name} collects, uses, and protects your personal data.`,\n};\n\nexport default function PrivacyPage() {\n const p = brand.privacy;\n return (\n <article className="max-w-3xl mx-auto px-6 sm:px-8 py-16 prose prose-lg max-w-none">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2 not-prose">\n {p.eyebrow}\n </p>\n <h1 className="font-serif text-[clamp(2.25rem,5vw,3.5rem)] font-semibold mb-2 -tracking-[0.02em]">\n {p.title}\n </h1>\n <p className="text-sm text-muted-foreground not-prose mb-10">\n Last updated: {p.lastUpdated}\n </p>\n\n <section className="space-y-5 leading-relaxed text-foreground/90">\n {p.sections.map((s) => (\n <div key={s.heading}>\n <h2 className="font-serif text-2xl font-semibold mt-0">{s.heading}</h2>\n {typeof s.body === "string" ? (\n <p>{s.body}</p>\n ) : (\n <>\n <p>{s.body.intro}</p>\n <ul className="list-disc pl-6 space-y-2">\n {s.body.bullets.map((b) => (\n <li key={b}>{b}</li>\n ))}\n </ul>\n </>\n )}\n </div>\n ))}\n </section>\n </article>\n );\n}\n' }, { "path": "app/sitemap.ts", "kind": "text", "content": 'import type { MetadataRoute } from "next";\nimport { getServerClient, type Product } from "@cimplify/sdk/server";\nimport { getSiteUrl } from "@/lib/site-url";\n\nconst STATIC_ROUTES: { path: string; priority: number; changeFrequency: "daily" | "weekly" | "monthly" }[] = [\n { path: "/", priority: 1.0, changeFrequency: "daily" },\n { path: "/shop", priority: 0.9, changeFrequency: "daily" },\n { path: "/about", priority: 0.5, changeFrequency: "monthly" },\n { path: "/faq", priority: 0.4, changeFrequency: "monthly" },\n { path: "/terms", priority: 0.2, changeFrequency: "monthly" },\n { path: "/privacy", priority: 0.2, changeFrequency: "monthly" },\n];\n\nexport default async function sitemap(): Promise<MetadataRoute.Sitemap> {\n const now = new Date();\n const siteUrl = await getSiteUrl();\n const client = getServerClient();\n\n const [productsRes, categoriesRes, collectionsRes] = await Promise.all([\n client.catalogue.getProducts({ limit: 500 }),\n client.catalogue.getCategories(),\n client.catalogue.getCollections(),\n ]);\n\n const products = productsRes.ok ? productsRes.value.items : [];\n const categories = categoriesRes.ok ? categoriesRes.value : [];\n const collections = collectionsRes.ok ? collectionsRes.value : [];\n\n const staticEntries: MetadataRoute.Sitemap = STATIC_ROUTES.map((r) => ({\n url: `${siteUrl}${r.path}`,\n lastModified: now,\n changeFrequency: r.changeFrequency,\n priority: r.priority,\n }));\n\n // Bakery uses a URL-driven product modal (`?product=<slug>` on the home or\n // shop pages). Emit those as deep-linkable URLs so search engines and LLMs\n // can index each product canonically.\n const productEntries: MetadataRoute.Sitemap = products.map((p: Product) => ({\n url: `${siteUrl}/shop?product=${encodeURIComponent(p.slug ?? p.id)}`,\n lastModified: p.updated_at ? new Date(p.updated_at) : now,\n changeFrequency: "weekly",\n priority: 0.7,\n }));\n\n const categoryEntries: MetadataRoute.Sitemap = categories.map((c) => ({\n url: `${siteUrl}/categories/${c.slug}`,\n lastModified: now,\n changeFrequency: "weekly",\n priority: 0.6,\n }));\n\n const collectionEntries: MetadataRoute.Sitemap = collections.map((c) => ({\n url: `${siteUrl}/collections/${c.slug}`,\n lastModified: now,\n changeFrequency: "weekly",\n priority: 0.6,\n }));\n\n return [...staticEntries, ...categoryEntries, ...collectionEntries, ...productEntries];\n}\n' }, { "path": "app/account/orders/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { AccountIframe } from "@/components/account-iframe";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `Orders \u2014 ${brand.name}`,\n};\n\nexport default function OrdersPage() {\n return (\n <article className="max-w-5xl mx-auto px-6 sm:px-8 py-12">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2">\n Account\n </p>\n <h1 className="font-serif text-[clamp(2rem,4vw,2.75rem)] font-semibold mb-8 -tracking-[0.02em]">\n Your orders\n </h1>\n <AccountIframe section="orders" />\n </article>\n );\n}\n' }, { "path": "app/account/addresses/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { AccountIframe } from "@/components/account-iframe";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `Addresses \u2014 ${brand.name}`,\n};\n\nexport default function AddressesPage() {\n return (\n <article className="max-w-5xl mx-auto px-6 sm:px-8 py-12">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2">\n Account\n </p>\n <h1 className="font-serif text-[clamp(2rem,4vw,2.75rem)] font-semibold mb-8 -tracking-[0.02em]">\n Your addresses\n </h1>\n <AccountIframe section="addresses" />\n </article>\n );\n}\n' }, { "path": "app/account/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { AccountIframe } from "@/components/account-iframe";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `Account \u2014 ${brand.name}`,\n description: brand.account.signupSubtitle,\n};\n\nexport default function AccountPage() {\n return (\n <article className="max-w-5xl mx-auto px-6 sm:px-8 py-12">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2">\n {brand.account.accountEyebrow}\n </p>\n <h1 className="font-serif text-[clamp(2rem,4vw,2.75rem)] font-semibold mb-8 -tracking-[0.02em]">\n {brand.account.accountTitle}\n </h1>\n <AccountIframe />\n </article>\n );\n}\n' }, { "path": "app/account/settings/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { AccountIframe } from "@/components/account-iframe";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `Settings \u2014 ${brand.name}`,\n};\n\nexport default function SettingsPage() {\n return (\n <article className="max-w-5xl mx-auto px-6 sm:px-8 py-12">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2">\n Account\n </p>\n <h1 className="font-serif text-[clamp(2rem,4vw,2.75rem)] font-semibold mb-8 -tracking-[0.02em]">\n Settings\n </h1>\n <AccountIframe section="settings" />\n </article>\n );\n}\n' }, { "path": "app/orders/[id]/page.tsx", "kind": "text", "content": 'import Link from "next/link";\n\nexport default async function OrderPage({ params }: { params: Promise<{ id: string }> }) {\n const { id } = await params;\n return (\n <section className="max-w-2xl mx-auto px-6 sm:px-8 py-20 text-center">\n <h1 className="font-serif text-3xl mt-0 mb-3">Thanks \u2014 your order is confirmed</h1>\n <p className="text-muted-foreground">\n Order <code className="font-mono text-foreground">{id}</code>\n </p>\n <p className="mt-6">\n <Link\n href="/"\n className="inline-block px-6 py-3 rounded-full bg-primary text-primary-foreground font-semibold text-sm transition-colors hover:bg-primary/90"\n >\n Continue shopping\n </Link>\n </p>\n </section>\n );\n}\n' }, { "path": "app/shipping/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { brand } from "@/lib/brand";\nimport { PolicyPage } from "@/components/policy-page";\n\nexport const metadata: Metadata = {\n title: `${brand.shipping.title} \u2014 ${brand.name}`,\n description: brand.shipping.sections[0]?.body\n ? typeof brand.shipping.sections[0].body === "string"\n ? brand.shipping.sections[0].body\n : brand.shipping.sections[0].body.intro\n : undefined,\n};\n\nexport default function ShippingPage() {\n return <PolicyPage policy={brand.shipping} />;\n}\n' }, { "path": "app/error.tsx", "kind": "text", "content": '"use client";\n\nimport { useEffect } from "react";\nimport Link from "next/link";\n\n/**\n * Root error boundary. Next.js calls this whenever a thrown error escapes\n * a Server Component without being caught by a closer `error.tsx`.\n *\n * Wire `reportError` (Sentry, Datadog, etc.) here so production failures\n * surface \u2014 silently recovering hides real bugs.\n */\nexport default function GlobalError({\n error,\n reset,\n}: {\n error: Error & { digest?: string };\n reset: () => void;\n}) {\n useEffect(() => {\n // TODO: replace with your error reporter\n // eslint-disable-next-line no-console\n console.error("Storefront error:", error);\n }, [error]);\n\n return (\n <section className="max-w-2xl mx-auto px-6 sm:px-8 py-20 text-center">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-3">\n Something broke\n </p>\n <h1 className="font-serif text-[clamp(2rem,4vw,2.75rem)] font-semibold mb-4">\n That wasn't supposed to happen.\n </h1>\n <p className="text-muted-foreground leading-relaxed mb-8">\n We've been notified. Refresh the page, or head back home \u2014\n most of the time the second try just works.\n </p>\n {error.digest && (\n <p className="text-xs font-mono text-muted-foreground mb-6">\n Reference: <code className="text-foreground">{error.digest}</code>\n </p>\n )}\n <div className="flex flex-wrap items-center justify-center gap-3">\n <button\n type="button"\n onClick={reset}\n className="inline-block px-6 py-3 rounded-full bg-primary text-primary-foreground font-semibold text-sm transition-colors hover:bg-primary/90"\n >\n Try again\n </button>\n <Link\n href="/"\n className="inline-block px-6 py-3 rounded-full border border-border hover:bg-muted transition-colors text-sm font-medium"\n >\n Back home\n </Link>\n </div>\n </section>\n );\n}\n' }, { "path": "app/layout.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { Inter, Playfair_Display } from "next/font/google";\nimport "./globals.css";\nimport { Providers } from "@/components/providers";\nimport { Header } from "@/components/header";\nimport { Footer } from "@/components/footer";\nimport { ProductModal } from "@/components/product-modal";\nimport { CartDrawer } from "@/components/cart-drawer";\nimport { OrganizationJsonLd } from "@/components/json-ld";\nimport { Suspense } from "react";\nimport { brand } from "@/lib/brand";\nimport { getSiteUrl } from "@/lib/site-url";\n\nconst inter = Inter({\n subsets: ["latin"],\n variable: "--font-sans",\n display: "swap",\n});\n\nconst playfair = Playfair_Display({\n subsets: ["latin"],\n variable: "--font-serif",\n display: "swap",\n});\n\nexport async function generateMetadata(): Promise<Metadata> {\n const siteUrl = await getSiteUrl();\n return {\n metadataBase: new URL(siteUrl),\n title: {\n default: brand.name,\n template: `%s \u2014 ${brand.name}`,\n },\n description: brand.description,\n openGraph: {\n type: "website",\n siteName: brand.name,\n locale: brand.locale,\n },\n twitter: { card: "summary_large_image" },\n };\n}\n\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\n return (\n <html lang="en" suppressHydrationWarning className={`${inter.variable} ${playfair.variable}`}>\n <body\n suppressHydrationWarning\n className="min-h-screen flex flex-col bg-background text-foreground font-sans"\n >\n <Suspense fallback={null}>\n <OrganizationJsonLd />\n </Suspense>\n <Providers>\n <Header />\n <main className="flex-1 pb-12 w-full">\n <Suspense fallback={null}>{children}</Suspense>\n </main>\n <Footer />\n <Suspense fallback={null}>\n <ProductModal />\n </Suspense>\n <CartDrawer />\n </Providers>\n </body>\n </html>\n );\n}\n' }, { "path": "app/robots.ts", "kind": "text", "content": 'import type { MetadataRoute } from "next";\nimport { getSiteUrl } from "@/lib/site-url";\n\nexport default async function robots(): Promise<MetadataRoute.Robots> {\n const siteUrl = await getSiteUrl();\n return {\n rules: [\n {\n userAgent: "*",\n allow: "/",\n disallow: ["/cart", "/checkout", "/orders/", "/api/"],\n },\n ],\n sitemap: `${siteUrl}/sitemap.xml`,\n host: siteUrl,\n };\n}\n' }, { "path": "app/checkout/page.tsx", "kind": "text", "content": '"use client";\n\nimport { useRouter } from "next/navigation";\nimport { CheckoutPage as SdkCheckoutPage } from "@cimplify/sdk/react";\n\nexport default function CheckoutPage() {\n const router = useRouter();\n return (\n <SdkCheckoutPage\n onComplete={(result) => {\n if (result.success && result.order) {\n router.push(`/orders/${result.order.id}`);\n }\n }}\n />\n );\n}\n' }, { "path": "app/not-found.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport Link from "next/link";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `Page not found \u2014 ${brand.name}`,\n description: "We couldn\'t find that page.",\n};\n\nexport default function NotFound() {\n return (\n <section className="max-w-2xl mx-auto px-6 sm:px-8 py-20 text-center">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-3">\n 404\n </p>\n <h1 className="font-serif text-[clamp(2.5rem,5vw,3.5rem)] font-semibold mb-4">\n Page not found.\n </h1>\n <p className="text-muted-foreground leading-relaxed mb-8">\n The URL you followed might be old, a typo, or pointing at a product\n that's sold out for the day. Try the menu or head back home.\n </p>\n <div className="flex flex-wrap items-center justify-center gap-3">\n <Link\n href="/shop"\n className="inline-block px-6 py-3 rounded-full bg-primary text-primary-foreground font-semibold text-sm transition-colors hover:bg-primary/90"\n >\n Browse the menu\n </Link>\n <Link\n href="/"\n className="inline-block px-6 py-3 rounded-full border border-border hover:bg-muted transition-colors text-sm font-medium"\n >\n Back home\n </Link>\n </div>\n </section>\n );\n}\n' }, { "path": "app/.well-known/ucp/route.ts", "kind": "text", "content": 'import { NextResponse } from "next/server";\n\n/**\n * UCP (Universal Commerce Protocol) manifest discovery endpoint.\n *\n * Agents \u2014 Claude, ChatGPT, Gemini, MCP clients \u2014 probe\n * `https://<your-domain>/.well-known/ucp` to learn what commerce\n * capabilities your storefront supports. We resolve the business\'s\n * UCP handle from the public key (via the storefront API), then forward\n * to Cimplify for the canonical manifest. Edge-cached for an hour\n * because capabilities change rarely.\n */\nconst UCP_API_BASE = "https://api.cimplify.io";\nconst STOREFRONT_API_BASE =\n process.env.NODE_ENV === "production"\n ? "https://storefronts.cimplify.io"\n : "http://127.0.0.1:8787";\n\nexport async function GET() {\n const publicKey = process.env.NEXT_PUBLIC_CIMPLIFY_PUBLIC_KEY;\n if (!publicKey) {\n return NextResponse.json(\n {\n error: "NEXT_PUBLIC_CIMPLIFY_PUBLIC_KEY not set",\n remediation:\n "Set NEXT_PUBLIC_CIMPLIFY_PUBLIC_KEY in .env.local (and your deployment env).",\n },\n { status: 500 },\n );\n }\n\n try {\n // Step 1 \u2014 resolve the business handle from the public key.\n const businessResp = await fetch(`${STOREFRONT_API_BASE}/api/v1/business`, {\n headers: { "X-API-Key": publicKey, "Content-Type": "application/json" },\n next: { revalidate: 3600 },\n });\n\n if (!businessResp.ok) {\n return NextResponse.json(\n { error: `Failed to resolve business: ${businessResp.status}` },\n { status: businessResp.status },\n );\n }\n\n const businessJson = await businessResp.json();\n const handle: string | undefined = businessJson?.data?.handle;\n if (!handle) {\n return NextResponse.json(\n { error: "Business has no handle configured" },\n { status: 500 },\n );\n }\n\n // Step 2 \u2014 fetch the canonical UCP manifest.\n const manifestResp = await fetch(\n `${UCP_API_BASE}/ucp/v1/${handle}/manifest`,\n {\n headers: { "Content-Type": "application/json" },\n next: { revalidate: 3600 },\n },\n );\n\n if (!manifestResp.ok) {\n return NextResponse.json(\n { error: `Upstream UCP manifest fetch failed: ${manifestResp.status}` },\n { status: manifestResp.status },\n );\n }\n\n const manifest = await manifestResp.json();\n return NextResponse.json(manifest, {\n headers: {\n "Content-Type": "application/json",\n "Cache-Control": "public, max-age=3600, s-maxage=3600",\n },\n });\n } catch (error) {\n return NextResponse.json(\n {\n error: "Failed to fetch UCP manifest",\n detail: error instanceof Error ? error.message : String(error),\n },\n { status: 500 },\n );\n }\n}\n' }, { "path": "app/sitemap-page/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport Link from "next/link";\nimport { getServerClient, tags, type Product } from "@cimplify/sdk/server";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `Sitemap \u2014 ${brand.name}`,\n description: "A human-readable index of every page on this site.",\n};\n\nexport const revalidate = 3600;\n\ninterface SitemapData {\n products: { slug: string; name: string }[];\n categories: { slug: string; name: string }[];\n collections: { slug: string; name: string }[];\n}\n\nasync function getSitemap(): Promise<SitemapData> {\n const client = getServerClient();\n const [pRes, cRes, colRes] = await Promise.all([\n client.catalogue.getProducts(\n { limit: 500 },\n { cacheOptions: { revalidate: 3600, tags: [tags.products()] } },\n ),\n client.catalogue.getCategories({\n cacheOptions: { revalidate: 3600, tags: [tags.categories()] },\n }),\n client.catalogue.getCollections({\n cacheOptions: { revalidate: 3600, tags: [tags.collections()] },\n }),\n ]);\n return {\n products: (pRes.ok ? pRes.value.items : []).map((p: Product) => ({\n slug: p.slug ?? p.id,\n name: p.name,\n })),\n categories: (cRes.ok ? cRes.value : []).map((c) => ({ slug: c.slug, name: c.name })),\n collections: (colRes.ok ? colRes.value : []).map((c) => ({ slug: c.slug, name: c.name })),\n };\n}\n\nconst STATIC_LINKS: { title: string; links: { href: string; label: string }[] }[] = [\n {\n title: "Browse",\n links: [\n { href: "/", label: "Home" },\n { href: "/shop", label: "Shop" },\n { href: "/search", label: "Search" },\n ],\n },\n {\n title: "Account",\n links: [\n { href: "/account", label: "Account" },\n { href: "/account/orders", label: "Orders" },\n { href: "/account/addresses", label: "Addresses" },\n { href: "/account/settings", label: "Settings" },\n { href: "/login", label: "Sign in" },\n { href: "/signup", label: "Create account" },\n { href: "/track-order", label: "Track an order" },\n { href: "/cart", label: "Cart" },\n { href: "/checkout", label: "Checkout" },\n ],\n },\n {\n title: "About",\n links: [\n { href: "/about", label: "About" },\n { href: "/faq", label: "FAQ" },\n { href: "/contact", label: "Contact" },\n ],\n },\n {\n title: "Policies",\n links: [\n { href: "/shipping", label: "Shipping" },\n { href: "/returns", label: "Returns" },\n { href: "/accessibility", label: "Accessibility" },\n { href: "/terms", label: "Terms of Service" },\n { href: "/privacy", label: "Privacy Policy" },\n ],\n },\n {\n title: "Machine-readable",\n links: [\n { href: "/sitemap.xml", label: "sitemap.xml (search engines)" },\n { href: "/llms.txt", label: "llms.txt (LLM agents)" },\n { href: "/robots.txt", label: "robots.txt" },\n { href: "/opensearch.xml", label: "opensearch.xml (browser search)" },\n ],\n },\n];\n\nexport default async function SitemapHtmlPage() {\n const { products, categories, collections } = await getSitemap();\n\n return (\n <article className="max-w-5xl mx-auto px-6 sm:px-8 py-16">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2">\n Sitemap\n </p>\n <h1 className="text-[clamp(2rem,4vw,2.75rem)] font-semibold mb-2 -tracking-[0.02em]">\n Every page, in one place.\n </h1>\n <p className="text-muted-foreground mb-12">\n For search engines, see <Link href="/sitemap.xml" className="text-primary hover:underline">/sitemap.xml</Link>.\n For LLM agents, see <Link href="/llms.txt" className="text-primary hover:underline">/llms.txt</Link>.\n </p>\n <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-10">\n {STATIC_LINKS.map((s) => (\n <Section key={s.title} title={s.title}>\n {s.links.map((l) => (\n <li key={l.href}>\n <Link href={l.href} className="hover:text-primary transition-colors">\n {l.label}\n </Link>\n </li>\n ))}\n </Section>\n ))}\n {categories.length > 0 && (\n <Section title="Categories">\n {categories.map((c) => (\n <li key={c.slug}>\n <Link href={`/categories/${c.slug}`} className="hover:text-primary transition-colors">\n {c.name}\n </Link>\n </li>\n ))}\n </Section>\n )}\n {collections.length > 0 && (\n <Section title="Collections">\n {collections.map((c) => (\n <li key={c.slug}>\n <Link href={`/collections/${c.slug}`} className="hover:text-primary transition-colors">\n {c.name}\n </Link>\n </li>\n ))}\n </Section>\n )}\n {products.length > 0 && (\n <Section title={`Products (${products.length})`}>\n {products.map((p) => (\n <li key={p.slug}>\n <Link href={`/shop?product=${encodeURIComponent(p.slug)}`} className="hover:text-primary transition-colors">\n {p.name}\n </Link>\n </li>\n ))}\n </Section>\n )}\n </div>\n </article>\n );\n}\n\nfunction Section({ title, children }: { title: string; children: React.ReactNode }) {\n return (\n <div>\n <p className="font-semibold text-[12px] uppercase tracking-[0.12em] text-foreground mb-3">\n {title}\n </p>\n <ul className="space-y-2 m-0 p-0 list-none text-sm text-muted-foreground">\n {children}\n </ul>\n </div>\n );\n}\n' }, { "path": "app/faq/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `FAQ \u2014 ${brand.name}`,\n description: "Delivery, pickup, custom cakes, allergens, payment \u2014 answers to the questions we hear most often.",\n};\n\nexport default function FaqPage() {\n const f = brand.faq;\n return (\n <article className="max-w-3xl mx-auto px-6 sm:px-8 py-16">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2">\n {f.eyebrow}\n </p>\n <h1 className="font-serif text-[clamp(2.25rem,5vw,3.5rem)] font-semibold mb-10 -tracking-[0.02em]">\n {f.title}\n </h1>\n <div className="space-y-12">\n {f.sections.map((section) => (\n <section key={section.title}>\n <h2 className="font-serif text-2xl font-semibold mb-5">{section.title}</h2>\n <dl className="space-y-6">\n {section.items.map((item) => (\n <div key={item.q}>\n <dt className="font-medium text-foreground mb-1.5">{item.q}</dt>\n <dd className="text-muted-foreground leading-relaxed">{item.a}</dd>\n </div>\n ))}\n </dl>\n </section>\n ))}\n </div>\n <p className="mt-12 pt-8 border-t border-border text-sm text-muted-foreground">\n {f.contactPrompt}{" "}\n <a\n href={`mailto:${f.contactEmail}`}\n className="text-primary font-semibold hover:underline"\n >\n {f.contactEmail}\n </a>{" "}\n and a real human will reply within 24 hours.\n </p>\n </article>\n );\n}\n' }, { "path": "app/terms/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `Terms of Service \u2014 ${brand.name}`,\n description: `The rules of the road for ordering from ${brand.name}.`,\n};\n\nexport default function TermsPage() {\n const t = brand.terms;\n return (\n <article className="max-w-3xl mx-auto px-6 sm:px-8 py-16 prose prose-lg max-w-none">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2 not-prose">\n {t.eyebrow}\n </p>\n <h1 className="font-serif text-[clamp(2.25rem,5vw,3.5rem)] font-semibold mb-2 -tracking-[0.02em]">\n {t.title}\n </h1>\n <p className="text-sm text-muted-foreground not-prose mb-10">\n Last updated: {t.lastUpdated}\n </p>\n\n <section className="space-y-5 leading-relaxed text-foreground/90">\n {t.sections.map((s) => (\n <div key={s.heading}>\n <h2 className="font-serif text-2xl font-semibold mt-0">{s.heading}</h2>\n {typeof s.body === "string" ? (\n <p>{s.body}</p>\n ) : (\n <>\n <p>{s.body.intro}</p>\n <ul className="list-disc pl-6 space-y-2">\n {s.body.bullets.map((b) => (\n <li key={b}>{b}</li>\n ))}\n </ul>\n </>\n )}\n </div>\n ))}\n </section>\n </article>\n );\n}\n' }, { "path": "app/returns/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { brand } from "@/lib/brand";\nimport { PolicyPage } from "@/components/policy-page";\n\nexport const metadata: Metadata = {\n title: `${brand.returns.title} \u2014 ${brand.name}`,\n};\n\nexport default function ReturnsPage() {\n return <PolicyPage policy={brand.returns} />;\n}\n' }, { "path": "app/collections/[slug]/listing-client.tsx", "kind": "text", "content": '"use client";\n\nimport { ProductGrid } from "@cimplify/sdk/react";\nimport type { Product } from "@cimplify/sdk";\nimport { StoreProductCard } from "@/components/store-product-card";\n\n/**\n * Client island for the collection listing. Receives server-fetched\n * products as props (serializable) and owns the `renderCard` function\n * (which can\'t cross the server/client boundary).\n */\nexport function ListingClient({ products }: { products: Product[] }) {\n return (\n <ProductGrid\n products={products}\n emptyMessage="No products in this collection yet."\n renderCard={(p) => <StoreProductCard product={p} />}\n />\n );\n}\n' }, { "path": "app/collections/[slug]/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { Suspense } from "react";\nimport Link from "next/link";\nimport { notFound } from "next/navigation";\nimport {\n getServerClient,\n tags,\n type Collection,\n type Product,\n} from "@cimplify/sdk/server";\nimport { ListingClient } from "./listing-client";\nimport { brand } from "@/lib/brand";\n\n// See app/products/[slug]/page.tsx for the rationale on generateStaticParams.\nexport async function generateStaticParams() {\n const r = await getServerClient().catalogue.getCollections();\n if (!r.ok || r.value.length === 0) {\n return [{ slug: "__placeholder__" }];\n }\n return r.value.map((c) => ({ slug: c.slug ?? c.id }));\n}\n\nexport const revalidate = 3600;\n\ninterface CollectionData {\n collection: Collection;\n products: Product[];\n}\n\ntype CollectionResult =\n | { ok: true; data: CollectionData }\n | { ok: false; code: string };\n\nasync function getCollection(slug: string): Promise<CollectionResult> {\n const client = getServerClient();\n const colRes = await client.catalogue.getCollectionBySlug(slug, {\n cacheOptions: { revalidate: 3600, tags: [tags.collections()] },\n });\n if (!colRes.ok) return { ok: false, code: colRes.error.code };\n\n const r = await client.catalogue.getCollectionProducts(colRes.value.id, undefined, {\n cacheOptions: {\n revalidate: 3600,\n tags: [\n tags.collection(colRes.value.id),\n tags.collectionProducts(colRes.value.id),\n ],\n },\n });\n const products = r.ok\n ? ((r.value as { items?: Product[] }).items ?? (r.value as Product[]))\n : [];\n return { ok: true, data: { collection: colRes.value, products } };\n}\n\nexport async function generateMetadata({\n params,\n}: {\n params: Promise<{ slug: string }>;\n}): Promise<Metadata> {\n const { slug } = await params;\n const result = await getCollection(slug);\n if (!result.ok) return {};\n const data = result.data;\n return {\n title: `${data.collection.name} \u2014 ${brand.name}`,\n description: data.collection.description ?? undefined,\n };\n}\n\nexport default async function CollectionPage({\n params,\n}: {\n params: Promise<{ slug: string }>;\n}) {\n return (\n <Suspense fallback={<CollectionSkeleton />}>\n <CollectionContent params={params} />\n </Suspense>\n );\n}\n\nasync function CollectionContent({\n params,\n}: {\n params: Promise<{ slug: string }>;\n}) {\n const { slug } = await params;\n const result = await getCollection(slug);\n if (!result.ok) {\n if (result.code === "NOT_FOUND") notFound();\n return <CollectionSkeleton />;\n }\n const { collection, products } = result.data;\n return (\n <section className="max-w-7xl mx-auto px-6 sm:px-8 pt-12">\n <header className="mb-8 text-center">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2">\n Collection\n </p>\n <h1 className="font-serif text-[clamp(2rem,4vw,2.75rem)] font-semibold mb-2">\n {collection.name}\n </h1>\n {collection.description && (\n <p className="mx-auto mb-2 max-w-xl text-muted-foreground">\n {collection.description}\n </p>\n )}\n <p className="text-sm text-muted-foreground">\n {products.length} item{products.length === 1 ? "" : "s"}\n </p>\n </header>\n <ListingClient products={products} />\n {products.length === 0 && (\n <p className="text-center mt-8">\n <Link href="/" className="text-primary font-semibold">\n \u2190 Back home\n </Link>\n </p>\n )}\n </section>\n );\n}\n\nfunction CollectionSkeleton() {\n return (\n <section className="max-w-7xl mx-auto px-6 sm:px-8 pt-12">\n <header className="mb-8 text-center">\n <div className="mx-auto h-3 w-20 bg-muted rounded mb-2 animate-pulse" />\n <div className="mx-auto h-10 w-64 bg-muted rounded mb-2 animate-pulse" />\n <div className="mx-auto h-4 w-80 bg-muted rounded animate-pulse" />\n </header>\n <div className="grid grid-cols-2 md:grid-cols-3 gap-4">\n {Array.from({ length: 6 }).map((_, i) => (\n <div key={i} className="aspect-square bg-muted rounded-2xl animate-pulse" />\n ))}\n </div>\n </section>\n );\n}\n' }, { "path": "app/shop/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { getServerClient, tags } from "@cimplify/sdk/server";\nimport { ShopClient } from "./shop-client";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `Shop \u2014 ${brand.name}`,\n description: brand.description,\n};\n\nexport const revalidate = 3600;\n\nasync function getShopData() {\n const client = getServerClient();\n const [p, c] = await Promise.all([\n client.catalogue.getProducts(\n { limit: 50 },\n { cacheOptions: { revalidate: 3600, tags: [tags.products()] } },\n ),\n client.catalogue.getCategories({\n cacheOptions: { revalidate: 3600, tags: [tags.categories()] },\n }),\n ]);\n return {\n products: p.ok ? p.value.items : [],\n categories: c.ok ? c.value : [],\n };\n}\n\nexport default async function ShopPage() {\n const { products, categories } = await getShopData();\n return <ShopClient products={products} categories={categories} />;\n}\n' }, { "path": "app/shop/shop-client.tsx", "kind": "text", "content": '"use client";\n\nimport { CataloguePage } from "@cimplify/sdk/react";\nimport type { Category, Product } from "@cimplify/sdk";\nimport { StoreProductCard } from "@/components/store-product-card";\n\n/**\n * Client island for the shop page. Server-side fetches all products and\n * categories (ISR-cached in `app/shop/page.tsx`), then hands\n * them to `<CataloguePage>` which owns the interactive filter / sort state.\n */\nexport function ShopClient({\n products,\n categories,\n}: {\n products: Product[];\n categories: Category[];\n}) {\n return (\n <CataloguePage\n title="The Menu"\n products={products}\n categories={categories}\n renderCard={(p) => <StoreProductCard product={p} />}\n />\n );\n}\n' }, { "path": "app/opensearch.xml/route.ts", "kind": "text", "content": 'import { brand } from "@/lib/brand";\nimport { getSiteUrl } from "@/lib/site-url";\n\n/**\n * OpenSearch description document \u2014 lets browsers add this site to the\n * address bar\'s search engine list. When users press Tab after typing the\n * domain, they get an inline search box that hits /search?q=...\n */\nexport async function GET(): Promise<Response> {\n const siteUrl = await getSiteUrl();\n const xml = `<?xml version="1.0" encoding="UTF-8"?>\n<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">\n <ShortName>${escapeXml(brand.shortName)}</ShortName>\n <Description>Search ${escapeXml(brand.name)}</Description>\n <InputEncoding>UTF-8</InputEncoding>\n <Url type="text/html" method="get" template="${siteUrl}/search?q={searchTerms}" />\n <Url type="application/opensearchdescription+xml" rel="self" template="${siteUrl}/opensearch.xml" />\n <moz:SearchForm>${siteUrl}/search</moz:SearchForm>\n</OpenSearchDescription>\n`;\n return new Response(xml, {\n headers: {\n "Content-Type": "application/opensearchdescription+xml; charset=utf-8",\n "Cache-Control": "public, max-age=86400",\n },\n });\n}\n\nfunction escapeXml(s: string): string {\n return s\n .replace(/&/g, "&")\n .replace(/</g, "<")\n .replace(/>/g, ">")\n .replace(/"/g, """)\n .replace(/\'/g, "'");\n}\n' }, { "path": "app/auth/signout/route.ts", "kind": "text", "content": 'import { buildSignoutCookies } from "@cimplify/sdk/server";\n\nconst CLIENT_ID = process.env.CIMPLIFY_CLIENT_ID ?? "";\n\nexport async function POST(): Promise<Response> {\n const headers = new Headers({ "Content-Type": "application/json" });\n for (const cookie of buildSignoutCookies({ clientId: CLIENT_ID })) {\n headers.append("Set-Cookie", cookie);\n }\n return new Response(JSON.stringify({ ok: true }), { status: 200, headers });\n}\n' }, { "path": "app/auth/session/route.ts", "kind": "text", "content": 'import { handleSessionRequest } from "@cimplify/sdk/server";\n\nconst CLIENT_ID = process.env.CIMPLIFY_CLIENT_ID ?? "";\nconst AUTH_URL = process.env.CIMPLIFY_AUTH_URL;\n\nexport async function GET(req: Request): Promise<Response> {\n if (!CLIENT_ID) {\n return Response.json({ sub: null }, { status: 200 });\n }\n return handleSessionRequest(req, { clientId: CLIENT_ID, authUrl: AUTH_URL });\n}\n' }, { "path": "app/auth/callback/route.ts", "kind": "text", "content": 'import { handleOidcCallback } from "@cimplify/sdk/server";\n\nconst CLIENT_ID = process.env.CIMPLIFY_CLIENT_ID ?? "";\nconst AUTH_URL = process.env.CIMPLIFY_AUTH_URL;\nconst REDIRECT_URI = process.env.CIMPLIFY_REDIRECT_URI ?? "";\n\nexport async function POST(req: Request): Promise<Response> {\n if (!CLIENT_ID || !REDIRECT_URI) {\n return Response.json({ error: "oidc_not_configured" }, { status: 500 });\n }\n return handleOidcCallback(req, {\n clientId: CLIENT_ID,\n authUrl: AUTH_URL,\n redirectUri: REDIRECT_URI,\n });\n}\n' }, { "path": "app/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { Suspense } from "react";\nimport { getServerClient, tags, type Product } from "@cimplify/sdk/server";\nimport { Hero } from "@/components/hero";\nimport { CollectionStrip } from "@/components/collection-strip";\nimport { CategoryGrid } from "@/components/category-grid";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `${brand.name} \u2014 ${brand.hero.title}`,\n description: brand.description,\n};\n\nexport const revalidate = 3600;\n\nasync function getHomeData() {\n const client = getServerClient();\n const [colRes, catRes] = await Promise.all([\n client.catalogue.getCollections({\n cacheOptions: { revalidate: 3600, tags: [tags.collections()] },\n }),\n client.catalogue.getCategories({\n cacheOptions: { revalidate: 3600, tags: [tags.categories()] },\n }),\n ]);\n const collections = colRes.ok ? colRes.value : [];\n const categories = catRes.ok ? catRes.value : [];\n\n const collectionsWithProducts = await Promise.all(\n collections.map(async (col) => {\n const r = await client.catalogue.getCollectionProducts(\n col.id,\n undefined,\n {\n cacheOptions: {\n revalidate: 3600,\n tags: [tags.collectionProducts(col.id)],\n },\n },\n );\n const items = r.ok\n ? ((r.value as { items?: Product[] }).items ?? (r.value as Product[]))\n : [];\n return { collection: col, products: items };\n }),\n );\n\n return {\n collections: collectionsWithProducts.filter((x) => x.products.length > 0),\n categories,\n };\n}\n\nexport default async function HomePage() {\n const { collections, categories } = await getHomeData();\n\n return (\n <>\n <Hero\n badge={brand.hero.badge}\n title={brand.hero.title}\n subtitle={brand.hero.subtitle}\n />\n {collections.map(({ collection, products }) => (\n <Suspense\n key={collection.id}\n fallback={<StripSkeleton title={collection.name} />}\n >\n <CollectionStrip\n collection={collection}\n products={products}\n collectionHref={`/collections/${collection.slug}`}\n />\n </Suspense>\n ))}\n <Suspense fallback={<CategoryGridSkeleton />}>\n <CategoryGrid categories={categories} />\n </Suspense>\n </>\n );\n}\n\nfunction StripSkeleton({ title }: { title: string }) {\n return (\n <section className="max-w-7xl mx-auto px-6 sm:px-8 pt-12">\n <h2 className="font-serif text-[28px] font-semibold m-0 mb-5">{title}</h2>\n <div className="grid grid-flow-col auto-cols-[minmax(220px,1fr)] gap-4 overflow-x-auto pb-2">\n {Array.from({ length: 5 }).map((_, i) => (\n <div key={i} className="aspect-square bg-muted rounded-2xl animate-pulse" />\n ))}\n </div>\n </section>\n );\n}\n\nfunction CategoryGridSkeleton() {\n return (\n <section className="max-w-7xl mx-auto px-6 sm:px-8 pt-14">\n <div className="h-8 w-48 bg-muted rounded mb-5 animate-pulse" />\n <div className="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4">\n {Array.from({ length: 6 }).map((_, i) => (\n <div key={i} className="h-32 bg-muted rounded-2xl animate-pulse" />\n ))}\n </div>\n </section>\n );\n}\n' }, { "path": "app/accessibility/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { brand } from "@/lib/brand";\nimport { PolicyPage } from "@/components/policy-page";\n\nexport const metadata: Metadata = {\n title: `${brand.accessibility.title} \u2014 ${brand.name}`,\n};\n\nexport default function AccessibilityPage() {\n return <PolicyPage policy={brand.accessibility} />;\n}\n' }, { "path": "app/track-order/track-order-form.tsx", "kind": "text", "content": '"use client";\n\nimport { useState } from "react";\nimport { useRouter } from "next/navigation";\n\n/**\n * Guest order tracker. Routes /orders/<id> with the entered id; the\n * post-checkout confirmation page already lives at /orders/[id] so this\n * just sends the visitor there. Replace the redirect with a real lookup\n * (e.g. Cimplify orders API + email-match guard) for production.\n */\nexport function TrackOrderForm() {\n const router = useRouter();\n const [orderId, setOrderId] = useState("");\n const [email, setEmail] = useState("");\n\n return (\n <form\n onSubmit={(e) => {\n e.preventDefault();\n if (!orderId.trim()) return;\n router.push(`/orders/${encodeURIComponent(orderId.trim())}`);\n }}\n className="space-y-4 rounded-2xl border border-border bg-card p-6"\n >\n <div>\n <label\n htmlFor="orderId"\n className="text-xs font-semibold uppercase tracking-wider text-muted-foreground block mb-1.5"\n >\n Order number\n </label>\n <input\n id="orderId"\n name="orderId"\n required\n value={orderId}\n onChange={(e) => setOrderId(e.target.value)}\n placeholder="ord_abc123\u2026"\n className="w-full px-4 py-3 rounded-md bg-background border border-border focus:border-primary focus:ring-2 focus:ring-primary/20 outline-none text-sm"\n />\n </div>\n <div>\n <label\n htmlFor="email"\n className="text-xs font-semibold uppercase tracking-wider text-muted-foreground block mb-1.5"\n >\n Order email\n </label>\n <input\n id="email"\n name="email"\n type="email"\n required\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n placeholder="you@email.com"\n className="w-full px-4 py-3 rounded-md bg-background border border-border focus:border-primary focus:ring-2 focus:ring-primary/20 outline-none text-sm"\n />\n </div>\n <button\n type="submit"\n className="w-full inline-flex items-center justify-center px-5 py-3 rounded-md bg-primary text-primary-foreground font-semibold text-sm hover:bg-primary/90 transition-colors"\n >\n Track order\n </button>\n </form>\n );\n}\n' }, { "path": "app/track-order/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { TrackOrderForm } from "./track-order-form";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `Track an order \u2014 ${brand.name}`,\n description: brand.trackOrder.body,\n};\n\nexport default function TrackOrderPage() {\n const t = brand.trackOrder;\n return (\n <article className="max-w-2xl mx-auto px-6 sm:px-8 py-16">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2">\n {t.eyebrow}\n </p>\n <h1 className="font-serif text-[clamp(2rem,5vw,3rem)] font-semibold mb-4 -tracking-[0.02em]">\n {t.title}\n </h1>\n <p className="text-muted-foreground leading-relaxed mb-8">{t.body}</p>\n <TrackOrderForm />\n </article>\n );\n}\n' }, { "path": "app/search/search-client.tsx", "kind": "text", "content": '"use client";\n\nimport { SearchPage } from "@cimplify/sdk/react";\n\nexport function SearchClient() {\n return <SearchPage />;\n}\n' }, { "path": "app/search/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { Suspense } from "react";\nimport { SearchClient } from "./search-client";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `Search \u2014 ${brand.name}`,\n description: `Search ${brand.name} \u2014 products, collections, categories.`,\n};\n\nexport default function SearchPage() {\n return (\n <article className="max-w-7xl mx-auto px-6 sm:px-8 py-10">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2">\n Search\n </p>\n <h1 className="font-serif text-[clamp(2rem,4vw,2.75rem)] font-semibold mb-8 -tracking-[0.02em]">\n Find anything.\n </h1>\n <Suspense fallback={<SearchSkeleton />}>\n <SearchClient />\n </Suspense>\n </article>\n );\n}\n\nfunction SearchSkeleton() {\n return (\n <div>\n <div className="h-12 w-full max-w-xl bg-muted rounded animate-pulse mb-8" />\n <div className="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-3 sm:gap-4">\n {Array.from({ length: 8 }).map((_, i) => (\n <div key={i} className="aspect-[4/3] bg-muted rounded-2xl animate-pulse" />\n ))}\n </div>\n </div>\n );\n}\n' }, { "path": "app/cart/page.tsx", "kind": "text", "content": '"use client";\n\nimport { useRouter } from "next/navigation";\nimport { CartPage as SdkCartPage } from "@cimplify/sdk/react";\n\nexport default function CartPage() {\n const router = useRouter();\n return <SdkCartPage onCheckout={() => router.push("/checkout")} />;\n}\n' }, { "path": ".claude/skills/cimplify-storefront/SKILL.md", "kind": "text", "content": "---\nname: cimplify-storefront\ndescription: Build, customize, rebrand, or deploy a Cimplify-scaffolded storefront. Triggers when the user asks to create a storefront, rebrand a Cimplify template, change the palette, add a page, deploy to Cimplify, or works in a project containing `lib/brand.ts` and `next.config.ts`.\n---\n\n# Cimplify Storefront skill\n\nYou're working on a project scaffolded from `cimplify init`. The architecture is opinionated and the rebrand surface is intentionally small. Read `AGENTS.md` at the project root for the file \u2194 brand-field map for *this template's* industry; this skill gives you the playbook that's the same across all eight.\n\n## The contract \u2014 never break\n\n1. **`lib/brand.ts` is the only place for content edits.** Every visible string reads from this file. If a string isn't in `brand`, *add a field* to the `Brand` interface \u2014 don't hardcode it in a page or component.\n2. **`app/globals.css` `@theme { \u2026 }`** holds palette + radius + font references. To re-skin the entire site, edit only this block.\n3. **Pages use ISR**, not Cache Components. Each page sets `export const revalidate = <seconds>` and reads from the SDK with `cacheOptions: { revalidate, tags }`. Don't add `'use cache'` / `cacheTag` / `cacheLife` \u2014 they require Node-specific runtime guarantees Cloudflare Workers doesn't provide, and their postponed state blows past CF's 128MB zlib limit.\n4. **`cacheComponents` stays OFF** in `next.config.ts`. The deploy target is Cloudflare Workers via opennext.\n5. **Client islands** (anything reading `useSearchParams`, `usePathname`, `useRouter`, `useState`) live behind `<Suspense>`.\n6. **`bun run test:run` (vitest)** is the canonical test runner. `bun test` will show false failures because Bun's `vi` shim is incomplete.\n7. **Cart, checkout, orders stay client.** They're session-bound. Don't try to SSR them.\n\n## The brand-field schema (in `lib/brand.ts`)\n\n```\nidentity: name, shortName, microTag, description, schemaType, currency, locale\ncontact: address, streetAddress, city, countryCode, phone, phoneTel, email, privacyEmail, hours\nsocials: [{ label, href, icon }] // icon \u2208 instagram|x|tiktok|facebook|youtube|linkedin|whatsapp\nheader: { nav: [{ label, href }] }\nhero: { badge, title, subtitle, primaryCtaLabel, secondaryCtaLabel?, secondaryCtaHref? }\noptional: trustItems[]?, brandStrip?, promo?, tradeIn? // render conditionally\nnewsletter: { eyebrow, title, body, placeholder, submitLabel, successLabel }\nabout: { eyebrow, title, paragraphs[], sections[{ heading, body }] }\nfaq: { eyebrow, title, sections[{ title, items[{ q, a }] }], contactPrompt, contactEmail }\nterms,\nprivacy,\nshipping,\nreturns,\naccessibility: { eyebrow, title, lastUpdated, sections[{ heading, body | { intro, bullets[] } }] }\naccount: eyebrows + titles for /account, /login, /signup\ncontactPage: { eyebrow, title, body, reasons[], directLines[{ label, value, href }] }\ntrackOrder: { eyebrow, title, body }\nfooter: { blurb, sitemap[{ title, links[] }], poweredBy? }\nllms: { summary } // opens /llms.txt\nmock: { seed, businessId }\n```\n\n## Playbook \u2014 common tasks\n\n### Rebrand a storefront for a new merchant\n\n1. Edit `lib/brand.ts`. Replace every field with the merchant's content. Use the brief / context the user gave you.\n2. Edit `app/globals.css` `@theme { \u2026 }`. Change `--color-primary`, `--color-background`, `--color-foreground`, optionally `--radius`. Use OKLCH; if the brand only gave hex, convert.\n3. (Optional) Swap fonts in `app/layout.tsx` \u2014 `next/font/google` import + the variable wired into the `<html>` className.\n4. Set `.env.local`: `NEXT_PUBLIC_CIMPLIFY_PUBLIC_KEY` (optional: `NEXT_PUBLIC_SITE_URL`).\n\nDon't touch any other file. If the rebrand needs content not in the schema, add the field to `Brand` first, populate it, then read it from the page.\n\n### Add a new section / component\n\n1. Build it as a Server Component in `components/` (or a client island in `*-client.tsx` if interactive).\n2. Read merchant copy from `brand`. Add new fields to the `Brand` interface if needed.\n3. Wrap interactive bits in `<Suspense fallback={\u2026}>` so static chrome streams first.\n4. Compose into the page.\n\n### Wire a Server Action that mutates data\n\n```ts\n\"use server\";\nimport { getServerClient, revalidateProducts } from \"@cimplify/sdk/server\";\n\nexport async function createProduct(input: ProductInput) {\n await getServerClient().catalogue.createProduct(input);\n revalidateProducts();\n}\n```\n\nAfter every mutation, call the matching `revalidate*` helper from `@cimplify/sdk/server`: `revalidateProducts`, `revalidateProduct(id)`, `revalidateCategories`, `revalidateCategory(id)`, `revalidateCollections`, `revalidateCollection(id)`, `revalidateBusiness`. These fire eviction events the central tag-cache worker picks up \u2014 it drops R2 entries and purges Cloudflare's edge.\n\n### Add a Server Component data fetch (ISR)\n\n```ts\nimport { getServerClient, tags } from \"@cimplify/sdk/server\";\n\nexport const revalidate = 3600; // page-level baseline\n\nasync function getProducts() {\n const r = await getServerClient().catalogue.getProducts({\n limit: 24,\n cacheOptions: { revalidate: 3600, tags: [tags.products()] },\n });\n if (!r.ok) {\n // Soft-render on transient errors so the page degrades gracefully\n // instead of hard-failing with React #419. Only call notFound() on\n // genuine 404 from origin.\n if (r.error.code === \"NOT_FOUND\") notFound();\n return [];\n }\n return r.value.items;\n}\n```\n\nFor `[slug]` routes, add `generateStaticParams` with a placeholder fallback so the page is statically prerenderable even with no upstream data yet:\n\n```ts\nexport async function generateStaticParams() {\n return [{ slug: \"__placeholder__\" }];\n}\n```\n\n### Eject an SDK component for deeper customization\n\nTry `classNames`, `renderImage`, `renderLink`, slot props first. If those run out:\n\n```bash\ncimplify list\ncimplify add product-card --dir src/components/cimplify\n```\n\nOnce ejected, the file is yours. Hooks/types still come from `@cimplify/sdk`.\n\n### Deploy\n\n```bash\ncimplify login\ncimplify projects create my-store\ncimplify link <project-id>\ncimplify env push\ncimplify deploy --prod\ncimplify logs --follow\ncimplify domains add my-store.com\n```\n\n## Pitfalls \u2014 explicit \u274C list\n\n- \u274C Hardcoding any visible string in a page or component. Always `brand.X`.\n- \u274C Adding `'use cache'`, `cacheTag`, `cacheLife`, or enabling `cacheComponents: true`. We deploy to Cloudflare Workers; postponed state exceeds the 128MB zlib limit. Use `cacheOptions` on SDK reads + `export const revalidate` per page.\n- \u274C Using `unstable_cache` \u2014 removed in Next 16. Use SDK `cacheOptions` instead.\n- \u274C Bypassing `getServerClient()` and calling `createCimplifyClient` directly in a Server Component \u2014 loses per-request memoization.\n- \u274C Mutating data without calling the matching `revalidate*` helper.\n- \u274C Calling `notFound()` on transient SDK errors \u2014 causes React #419 mid-stream. Check the `Result.error.code === \"NOT_FOUND\"` first; otherwise soft-render a skeleton.\n- \u274C Adding an `app/error.tsx` handler that calls `reset()` without logging \u2014 silently swallowed errors hide bugs.\n- \u274C Running `bun test` and reporting failures. Use `bun run test:run` (vitest).\n- \u274C Editing the per-template `AGENTS.md` to remove notes about TODOs (contact form, newsletter fake submits) \u2014 they're real.\n\n## Where things live\n\n| Need | Look here |\n|---|---|\n| Which page reads which `brand.X` field | `AGENTS.md` at project root |\n| Architectural rules | `AGENTS.md` at project root + this skill |\n| Running locally | `bun dev` (boots mock + Next together) |\n| Switching mock seed | edit `dev:mock` in `package.json` |\n| Full SDK reference | `cimplify.dev/sdk/optimization`, `cimplify.dev/sdk/server` |\n\n## What to do when the user asks something out-of-scope\n\nIf the user asks for something the template doesn't support out of the box:\n\n1. **Check first** \u2014 is there an SDK component or hook that does it? `@cimplify/sdk/react` has 50+ components, 30+ hooks. Search `node_modules/@cimplify/sdk/dist/react.d.mts` if needed.\n2. **Compose from existing parts** before authoring new ones.\n3. **If genuinely missing** \u2014 build the new component, hoist its strings into `brand.ts`, document in `AGENTS.md`.\n\nDon't introduce competing patterns (a new caching strategy, a new auth flow, a new theming system). The template's opinions are intentional.\n" }, { "path": "postcss.config.mjs", "kind": "text", "content": 'const config = {\n plugins: {\n "@tailwindcss/postcss": {},\n },\n};\n\nexport default config;\n' }, { "path": ".env.example", "kind": "text", "content": "# Your tenant public key. Get it from the desk's Developers tab.\n# `cpk_live_*` / `cpk_test_*` keys auto-route same-origin requests\n# to hosted Cimplify in both dev and prod. Anything else (`mock-dev`,\n# empty) falls back to the local `cimplify dev` mock.\nNEXT_PUBLIC_CIMPLIFY_PUBLIC_KEY=mock-dev\n\n# Optional. Forces a fixed canonical URL for sitemap.xml, robots.txt,\n# OpenGraph, and llms.txt. Leave unset and the storefront derives the\n# canonical from the request `Host` header automatically.\n# NEXT_PUBLIC_SITE_URL=\n" }, { "path": "README.md", "kind": "text", "content": "# __STOREFRONT_NAME__\n\nA Cimplify storefront scaffolded from the **bakery** template \u2014 Next.js 16 (App Router), React 19, Tailwind v4. Warm food-styled palette, Playfair Display + Inter typography, designed for bakeries, p\xE2tisseries, and food businesses.\n\nFor a different industry, scaffold with `--template`:\n\n```bash\ncimplify init my-store --template retail # electronics / consumer goods\ncimplify init my-store --template bakery # default \u2014 food / p\xE2tisserie\n```\n\n## Run\n\n```bash\nbun install\nbun dev\n```\n\nTwo things start in parallel:\n\n- `cimplify-mock` \u2014 the Cimplify mock API on `http://127.0.0.1:8787` (Akua's Bakery seeded by default).\n- `next dev` \u2014 this storefront on `http://localhost:3000`.\n\nOpen the storefront in your browser. Edit `app/page.tsx` to start customising. The SDK ships full pages (`<CataloguePage>`, `<ProductPage>`, `<CartPage>`, `<CheckoutPage>`) and layouts (`<DefaultProductLayout>`, `<FoodProductLayout>`, etc.) that you can swap in.\n\n## Structure\n\n```\napp/\n layout.tsx # root layout, fonts, providers, header/footer/modal\n page.tsx # home\n shop/page.tsx # full catalogue (SDK <CataloguePage/>)\n collections/[slug]/ # collection landing\n categories/[slug]/ # category landing\n cart/page.tsx # SDK <CartPage/>\n checkout/page.tsx # SDK <CheckoutPage/>\n orders/[id]/page.tsx # post-checkout thank-you\n globals.css # Tailwind import + theme tokens\ncomponents/\n providers.tsx # CimplifyProvider client wrapper\n header.tsx, footer.tsx, hero.tsx\n store-product-card.tsx # SDK <ProductCard/> wired to URL-driven modal\n product-modal.tsx # ?product=<slug> deep-linkable modal\n collection-strip.tsx # horizontal product strip\n category-grid.tsx # SDK <CategoryGrid/> with router navigation\nlib/\n cart.ts # useCartCount() for the header pill\n```\n\n## Switch seed\n\n```bash\ncimplify-mock --seed restaurant # Mama's Kitchen\ncimplify-mock --seed retail # Currents Electronics\ncimplify-mock --seed services # Serene Spa\ncimplify-mock --seed grocery # FreshMart\n```\n\n## Go live\n\n```diff\n# .env.local\n- NEXT_PUBLIC_CIMPLIFY_PUBLIC_KEY=mock-dev\n+ NEXT_PUBLIC_CIMPLIFY_PUBLIC_KEY=<your tenant key>\n```\n\nDeploy with `cimplify deploy --prod` after linking the project. See [`cimplify` CLI docs](https://www.cimplify.dev/docs/cli). `next.config.ts` already whitelists the SDK image hosts under `images.remotePatterns`.\n" }, { "path": ".cursor/rules/cimplify-storefront.mdc", "kind": "binary", "content": "LS0tCmRlc2NyaXB0aW9uOiBDaW1wbGlmeSBzdG9yZWZyb250IOKAlCBhcmNoaXRlY3R1cmFsIHJ1bGVzIGFuZCByZWJyYW5kIGNvbnRyYWN0IGZvciBhIHByb2plY3Qgc2NhZmZvbGRlZCBmcm9tIGBjaW1wbGlmeSBpbml0YC4gVHJpZ2dlcnMgd2hlbiBmaWxlcyBsaWtlIGxpYi9icmFuZC50cywgYXBwL2dsb2JhbHMuY3NzLCBjb21wb25lbnRzL2hlYWRlci50c3gsIG9yIC5jaW1wbGlmeS9wcm9qZWN0Lmpzb24gYXJlIGluIHRoZSB3b3Jrc3BhY2UuCmdsb2JzOiBbImxpYi9icmFuZC50cyIsICJhcHAvKioiLCAiY29tcG9uZW50cy8qKiIsICIuZW52LmxvY2FsIiwgIm5leHQuY29uZmlnLnRzIl0KYWx3YXlzQXBwbHk6IHRydWUKLS0tCgojIENpbXBsaWZ5IHN0b3JlZnJvbnQKClRoaXMgcHJvamVjdCB3YXMgc2NhZmZvbGRlZCBmcm9tIGEgQ2ltcGxpZnkgdGVtcGxhdGUuIFJlYWQgYEFHRU5UUy5tZGAgYXQgdGhlIHByb2plY3Qgcm9vdCBmb3IgdGhlIGZpbGUg4oaUIGBicmFuZC5YYCBmaWVsZCBtYXAgYW5kIGAuY2xhdWRlL3NraWxscy9jaW1wbGlmeS1zdG9yZWZyb250L1NLSUxMLm1kYCBmb3IgdGhlIGZ1bGwgcGxheWJvb2suCgojIyBUaGUgY29udHJhY3QKCjEuICoqYGxpYi9icmFuZC50c2AqKiDigJQgZXZlcnkgdmlzaWJsZSBzdHJpbmcuIElmIHNvbWV0aGluZyBpc24ndCB0aGVyZSwgYWRkIGEgZmllbGQgdG8gdGhlIGBCcmFuZGAgaW50ZXJmYWNlOyBkb24ndCBoYXJkY29kZS4KMi4gKipgYXBwL2dsb2JhbHMuY3NzYCBgQHRoZW1lYCBibG9jayoqIOKAlCBwYWxldHRlLCByYWRpdXMsIGZvbnQgcmVmZXJlbmNlcy4KMy4gKipTZXJ2ZXIgQ29tcG9uZW50cyBhcmUgY2FjaGVkKiogdmlhIGAndXNlIGNhY2hlJ2AgKyBgY2FjaGVUYWcodGFncy5YKCkpYCArIGBjYWNoZUxpZmUoImhvdXJzIilgLiBEb24ndCBkb3duZ3JhZGUgdG8gY2xpZW50IHRvIHNpbGVuY2UgYSB3YXJuaW5nLgo0LiAqKkNsaWVudCBpc2xhbmRzKiogYmVoaW5kIGA8U3VzcGVuc2U+YC4KNS4gKipgY2FjaGVDb21wb25lbnRzOiB0cnVlYCoqIGluIGBuZXh0LmNvbmZpZy50c2AgaXMgbm9uLW5lZ290aWFibGUuCjYuIFVzZSAqKmBidW4gcnVuIHRlc3Q6cnVuYCoqICh2aXRlc3QpLCBub3QgYGJ1biB0ZXN0YC4KCiMjIERvbid0CgotIEhhcmRjb2RlIHZpc2libGUgc3RyaW5ncyBpbiBwYWdlcy9jb21wb25lbnRzLgotIFVzZSBgdW5zdGFibGVfY2FjaGVgIChOZXh0IDE2IHVzZXMgYCd1c2UgY2FjaGUnYCkuCi0gQnlwYXNzIGBnZXRTZXJ2ZXJDbGllbnQoKWAgKGxvc2VzIHBlci1yZXF1ZXN0IG1lbW9pemF0aW9uKS4KLSBNdXRhdGUgd2l0aG91dCBjYWxsaW5nIHRoZSBtYXRjaGluZyBgcmV2YWxpZGF0ZSpgIGhlbHBlciBmcm9tIGBAY2ltcGxpZnkvc2RrL3NlcnZlcmAuCg==" }, { "path": "vitest.config.ts", "kind": "text", "content": 'import { defineConfig } from "vitest/config";\n\nexport default defineConfig({\n test: {\n environment: "node",\n include: ["__tests__/**/*.test.ts"],\n globals: false,\n },\n});\n' }, { "path": "tsconfig.json", "kind": "text", "content": '{\n "compilerOptions": {\n "target": "ES2022",\n "lib": [\n "dom",\n "dom.iterable",\n "esnext"\n ],\n "allowJs": false,\n "skipLibCheck": true,\n "strict": true,\n "noEmit": true,\n "esModuleInterop": true,\n "module": "esnext",\n "moduleResolution": "bundler",\n "resolveJsonModule": true,\n "isolatedModules": true,\n "jsx": "react-jsx",\n "incremental": true,\n "plugins": [\n {\n "name": "next"\n }\n ],\n "paths": {\n "@/*": [\n "./*"\n ]\n }\n },\n "include": [\n "next-env.d.ts",\n "**/*.ts",\n "**/*.tsx",\n ".next/types/**/*.ts",\n ".next/dev/types/**/*.ts"\n ],\n "exclude": [\n "node_modules"\n ]\n}\n' }, { "path": "components/signed-out-prompt.tsx", "kind": "text", "content": 'import { CimplifySignInButton } from "@cimplify/sdk/react";\nimport { brand } from "@/lib/brand";\n\ninterface Props {\n heading?: string;\n subtitle?: string;\n}\n\nexport function SignedOutPrompt({ heading, subtitle }: Props) {\n const clientId = process.env.NEXT_PUBLIC_CIMPLIFY_CLIENT_ID ?? "";\n const redirectUri = process.env.NEXT_PUBLIC_CIMPLIFY_REDIRECT_URI ?? "";\n return (\n <div className="max-w-md mx-auto bg-card border border-border rounded-2xl p-8 sm:p-10 text-center">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2">\n {brand.account.loginEyebrow}\n </p>\n <h2 className="font-serif text-2xl sm:text-3xl font-semibold mb-3 -tracking-[0.02em]">\n {heading ?? brand.account.loginTitle}\n </h2>\n <p className="text-sm text-muted-foreground mb-7 leading-relaxed">\n {subtitle ?? brand.account.loginSubtitle}\n </p>\n <CimplifySignInButton\n clientId={clientId}\n redirectUri={redirectUri}\n variant="primary"\n fullWidth\n onSuccess={() => window.location.reload()}\n />\n </div>\n );\n}\n' }, { "path": "components/account-iframe.tsx", "kind": "text", "content": '"use client";\n\nimport { CimplifyAccount } from "@cimplify/sdk/react";\nimport { brand } from "@/lib/brand";\n\n/**\n * Cimplify Account portal \u2014 iframe-mounted UI hosted by Cimplify Link.\n * Handles sign-in, sign-up, OTP, addresses, payment methods, sessions,\n * and order history. The iframe owns auth state; we just choose which\n * `section` to land on.\n *\n * `merchantName` is passed so the embedded widget can render scoping\n * affordances ("Showing your account with Akua\'s Bakery only.") and\n * enforce the per-merchant data contract \u2014 orders/subs filter to this\n * business, cross-merchant surfaces are hidden.\n */\nexport function AccountIframe({ section }: { section?: string }) {\n return <CimplifyAccount section={section} merchantName={brand.name} />;\n}\n' }, { "path": "components/nav-link.tsx", "kind": "text", "content": '"use client";\n\nimport Link from "next/link";\nimport { usePathname } from "next/navigation";\n\nexport function NavLink({ href, children }: { href: string; children: React.ReactNode }) {\n const pathname = usePathname();\n const active = pathname === href;\n return (\n <Link\n href={href}\n className={[\n "text-[13px] font-medium tracking-wide transition-colors",\n active ? "text-primary" : "text-muted-foreground hover:text-foreground",\n ].join(" ")}\n >\n {children}\n </Link>\n );\n}\n' }, { "path": "components/collection-strip.tsx", "kind": "text", "content": 'import Link from "next/link";\nimport type { Collection, Product } from "@cimplify/sdk";\nimport { StoreProductCard } from "./store-product-card";\n\ninterface CollectionStripProps {\n collection: Collection;\n products: Product[];\n collectionHref?: string;\n}\n\n/**\n * Horizontal strip of products under a collection title. Cards come from the\n * SDK so every variant (Food, Bundle, Composite, Service, \u2026) renders\n * correctly; clicks open the shared URL-driven product modal.\n */\nexport function CollectionStrip({ collection, products, collectionHref }: CollectionStripProps) {\n if (products.length === 0) return null;\n return (\n <section className="max-w-7xl mx-auto px-6 sm:px-8 pt-12">\n <header className="grid grid-cols-[1fr_auto] items-end gap-4 mb-5">\n <h2 className="font-serif text-[28px] font-semibold m-0">{collection.name}</h2>\n {collectionHref && (\n <Link\n href={collectionHref}\n className="text-[13px] font-semibold text-primary hover:underline"\n >\n See all \u2192\n </Link>\n )}\n {collection.description && (\n <p className="col-span-full m-0 mt-1 text-sm text-muted-foreground">\n {collection.description}\n </p>\n )}\n </header>\n <div className="grid grid-flow-col auto-cols-[minmax(220px,1fr)] gap-4 overflow-x-auto snap-x snap-mandatory pb-2">\n {products.slice(0, 8).map((p) => (\n <div key={p.id} className="snap-start">\n <StoreProductCard product={p} />\n </div>\n ))}\n </div>\n </section>\n );\n}\n' }, { "path": "components/category-grid.tsx", "kind": "text", "content": '"use client";\n\nimport { useRouter } from "next/navigation";\nimport { CategoryGrid as SdkCategoryGrid } from "@cimplify/sdk/react";\nimport type { Category } from "@cimplify/sdk";\n\n/**\n * Homepage category tiles \u2014 defers to the SDK\'s <CategoryGrid/> for layout\n * and accessibility, and routes selections to /categories/:slug.\n */\nexport function CategoryGrid({ categories }: { categories?: Category[] }) {\n const router = useRouter();\n return (\n <section className="max-w-7xl mx-auto px-6 sm:px-8 pt-14">\n <h2 className="font-serif text-[28px] font-semibold m-0 mb-5">Browse the menu</h2>\n <SdkCategoryGrid\n categories={categories}\n onSelect={(c) => router.push(`/categories/${c.slug}`)}\n classNames={{\n item: "flex flex-col gap-1 p-6 bg-card border border-border rounded-2xl cursor-pointer text-left transition-all hover:border-primary hover:-translate-y-0.5",\n name: "font-serif text-lg font-semibold text-foreground",\n description: "text-xs text-muted-foreground",\n count: "text-xs text-muted-foreground mt-1",\n }}\n />\n </section>\n );\n}\n' }, { "path": "components/providers.tsx", "kind": "text", "content": '"use client";\n\nimport { useMemo, type ReactNode } from "react";\nimport { createCimplifyClient } from "@cimplify/sdk";\nimport { CimplifyProvider, CartDrawerProvider } from "@cimplify/sdk/react";\n\n// Same-origin client \u2014 every request goes through the Next.js rewrite in\n// next.config.ts, so no CORS preflight ever hits the browser.\nexport function Providers({ children }: { children: ReactNode }) {\n const client = useMemo(() => {\n const baseUrl =\n typeof window !== "undefined" ? window.location.origin : "http://127.0.0.1:8787";\n const publicKey = process.env.NEXT_PUBLIC_CIMPLIFY_PUBLIC_KEY ?? "mock-dev";\n return createCimplifyClient({\n baseUrl,\n publicKey,\n suppressPublicKeyWarning: true,\n });\n }, []);\n\n return (\n <CimplifyProvider client={client}>\n <CartDrawerProvider>{children}</CartDrawerProvider>\n </CimplifyProvider>\n );\n}\n' }, { "path": "components/store-product-card.tsx", "kind": "text", "content": '"use client";\n\nimport Link from "next/link";\nimport {\n CardVariant,\n FoodProductCard,\n RetailProductCard,\n WholesaleProductCard,\n DigitalProductCard,\n BundleProductCard,\n CompositeProductCard,\n StandardServiceCard,\n CompactServiceCard,\n ScheduleServiceCard,\n RentalServiceCard,\n AccommodationCard,\n LeaseServiceCard,\n SubscriptionCard,\n} from "@cimplify/sdk/react";\nimport type { CardLayoutProps } from "@cimplify/sdk/react";\nimport type { Product } from "@cimplify/sdk";\nimport { PRODUCT_TYPE, RENDER_HINT, DURATION_UNIT } from "@cimplify/sdk";\n\nconst RENTAL_UNITS = new Set<string>([DURATION_UNIT.Days, DURATION_UNIT.Hours]);\nconst LEASE_UNITS = new Set<string>([DURATION_UNIT.Weeks, DURATION_UNIT.Months, DURATION_UNIT.Years]);\n\nconst VARIANT_CARDS: Record<CardVariant, React.ComponentType<CardLayoutProps>> = {\n [CardVariant.Food]: FoodProductCard,\n [CardVariant.Retail]: RetailProductCard,\n [CardVariant.Wholesale]: WholesaleProductCard,\n [CardVariant.Digital]: DigitalProductCard,\n [CardVariant.Bundle]: BundleProductCard,\n [CardVariant.Composite]: CompositeProductCard,\n [CardVariant.Standard]: StandardServiceCard,\n [CardVariant.Compact]: CompactServiceCard,\n [CardVariant.Schedule]: ScheduleServiceCard,\n [CardVariant.Rental]: RentalServiceCard,\n [CardVariant.Accommodation]: AccommodationCard,\n [CardVariant.Lease]: LeaseServiceCard,\n [CardVariant.Subscription]: SubscriptionCard,\n};\n\nfunction resolveVariant(p: Product): CardVariant {\n if (p.type === PRODUCT_TYPE.Bundle) return CardVariant.Bundle;\n if (p.type === PRODUCT_TYPE.Composite) return CardVariant.Composite;\n if (p.quantity_pricing && p.quantity_pricing.length > 1) return CardVariant.Wholesale;\n if (p.type === PRODUCT_TYPE.Digital) return CardVariant.Digital;\n if (p.type === PRODUCT_TYPE.Service) {\n if (p.duration_unit && RENTAL_UNITS.has(p.duration_unit)) return CardVariant.Rental;\n if (p.duration_unit === DURATION_UNIT.Nights) return CardVariant.Accommodation;\n if (p.duration_unit && LEASE_UNITS.has(p.duration_unit)) return CardVariant.Lease;\n if (p.billing_plans && p.billing_plans.length > 0 && !p.duration_minutes) return CardVariant.Subscription;\n return CardVariant.Standard;\n }\n if (p.render_hint === RENDER_HINT.Food) return CardVariant.Food;\n return CardVariant.Retail;\n}\n\ninterface Props {\n product: Product;\n /** Override the auto-detected card variant. */\n variant?: CardVariant;\n}\n\n/**\n * Variant-aware product card that opens the URL-driven product modal on\n * click. Uses `next/link` with `?product=<slug>` so the link is statically\n * pre-renderable \u2014 no `useSearchParams` dependency means cards don\'t\n * become dynamic islands. The modal (which already reads `useSearchParams`\n * inside a Suspense boundary in the root layout) handles the rest.\n */\nexport function StoreProductCard({ product, variant }: Props) {\n const slug = product.slug || product.id;\n const Card = VARIANT_CARDS[variant ?? resolveVariant(product)];\n const href = `?product=${encodeURIComponent(slug)}`;\n\n return (\n <Card\n product={product}\n renderLink={({ className, children }) => (\n <Link href={href} scroll={false} prefetch={false} className={className}>\n {children}\n </Link>\n )}\n />\n );\n}\n' }, { "path": "components/account-pill.tsx", "kind": "text", "content": '"use client";\n\nimport { useEffect, useRef } from "react";\nimport Link from "next/link";\nimport { CimplifySignInButton, useCimplifySession } from "@cimplify/sdk/react";\nimport { signInSilent } from "@cimplify/sdk";\n\nconst CLIENT_ID = process.env.NEXT_PUBLIC_CIMPLIFY_CLIENT_ID ?? "";\n\n// Attempts silent SSO on mount before showing the button so returning\n// shoppers don\'t see a flash of "Sign in" before landing as signed in.\nexport function AccountPill() {\n const { session, loading, refresh } = useCimplifySession();\n const triedSilent = useRef(false);\n\n useEffect(() => {\n if (triedSilent.current || session || !CLIENT_ID) return;\n triedSilent.current = true;\n void signInSilent({\n clientId: CLIENT_ID,\n redirectUri: `${window.location.origin}/auth/callback`,\n }).then((r) => {\n if (r.ok) refresh();\n });\n }, [session, refresh]);\n\n if (loading || !CLIENT_ID) return <span className="h-9 w-24" aria-hidden />;\n\n if (session) {\n const first = session.name?.split(/\\s+/)[0] ?? "Account";\n return (\n <Link\n href="/account"\n className="text-[13px] font-medium tracking-wide text-foreground hover:text-primary transition-colors"\n >\n Hi, {first}\n </Link>\n );\n }\n\n return (\n <CimplifySignInButton\n clientId={CLIENT_ID}\n redirectUri={`${typeof window !== "undefined" ? window.location.origin : ""}/auth/callback`}\n variant="text"\n onSuccess={() => refresh()}\n />\n );\n}\n' }, { "path": "components/hero.tsx", "kind": "text", "content": 'interface HeroProps {\n badge?: string;\n title: string;\n subtitle?: string;\n}\n\nexport function Hero({ badge, title, subtitle }: HeroProps) {\n return (\n <section className="px-6 sm:px-8 py-16 text-center bg-gradient-to-b from-accent to-background">\n {badge && (\n <span className="inline-block mb-4 px-3.5 py-1.5 rounded-full bg-card border border-accent text-accent-foreground text-[11px] font-semibold uppercase tracking-[0.12em]">\n {badge}\n </span>\n )}\n <h1 className="font-serif text-[clamp(2.25rem,5vw,3.5rem)] font-semibold m-0 -tracking-[0.02em]">\n {title}\n </h1>\n {subtitle && (\n <p className="mx-auto mt-2 max-w-xl text-base text-muted-foreground">\n {subtitle}\n </p>\n )}\n </section>\n );\n}\n' }, { "path": "components/footer.tsx", "kind": "text", "content": 'import Link from "next/link";\nimport { brand } from "@/lib/brand";\n\nconst ICONS: Record<string, React.ReactNode> = {\n instagram: (\n <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5" aria-hidden className="w-5 h-5">\n <rect x="3" y="3" width="18" height="18" rx="5" />\n <circle cx="12" cy="12" r="4" />\n <circle cx="17.5" cy="6.5" r="0.75" fill="currentColor" />\n </svg>\n ),\n x: (\n <svg viewBox="0 0 24 24" fill="currentColor" aria-hidden className="w-5 h-5">\n <path d="M18 2h3l-7.5 8.6L22 22h-6.6l-5-6.5L4 22H1l8-9.2L1.4 2H8l4.6 6 5.4-6z" />\n </svg>\n ),\n tiktok: (\n <svg viewBox="0 0 24 24" fill="currentColor" aria-hidden className="w-5 h-5">\n <path d="M16 3v3.5a4.5 4.5 0 0 0 4.5 4.5V14a7.5 7.5 0 0 1-4.5-1.5V16a5 5 0 1 1-5-5v3a2 2 0 1 0 2 2V3z" />\n </svg>\n ),\n facebook: (\n <svg viewBox="0 0 24 24" fill="currentColor" aria-hidden className="w-5 h-5">\n <path d="M14 9V7a1 1 0 0 1 1-1h2V3h-3a4 4 0 0 0-4 4v2H8v3h2v9h3v-9h2.5l.5-3H13z" />\n </svg>\n ),\n youtube: (\n <svg viewBox="0 0 24 24" fill="currentColor" aria-hidden className="w-5 h-5">\n <path d="M22.5 6.5a2.6 2.6 0 0 0-1.8-1.8C19 4.2 12 4.2 12 4.2s-7 0-8.7.5A2.6 2.6 0 0 0 1.5 6.5C1 8.2 1 12 1 12s0 3.8.5 5.5a2.6 2.6 0 0 0 1.8 1.8C5 19.8 12 19.8 12 19.8s7 0 8.7-.5a2.6 2.6 0 0 0 1.8-1.8c.5-1.7.5-5.5.5-5.5s0-3.8-.5-5.5zM10 15.5v-7l6 3.5-6 3.5z" />\n </svg>\n ),\n linkedin: (\n <svg viewBox="0 0 24 24" fill="currentColor" aria-hidden className="w-5 h-5">\n <path d="M4 4h4v16H4zM6 2.5a2 2 0 1 0 0 4 2 2 0 0 0 0-4zM10 8h4v2.5h.1c.6-1.1 2-2.5 4-2.5 4 0 4.9 2.6 4.9 6V20h-4v-5c0-1.5-.5-3-2.3-3-1.7 0-2.5 1.3-2.5 3v5h-4z" />\n </svg>\n ),\n whatsapp: (\n <svg viewBox="0 0 24 24" fill="currentColor" aria-hidden className="w-5 h-5">\n <path d="M12 2a10 10 0 0 0-8.6 15l-1.4 5 5.2-1.4A10 10 0 1 0 12 2zm5 14.2c-.2.6-1.2 1.2-1.7 1.2-.5.1-1.1.1-1.7-.1-.4-.1-.9-.3-1.5-.6a8.4 8.4 0 0 1-3.7-3.4c-.7-1-1-1.8-1-2.5 0-.7.4-1.1.6-1.3.2-.2.4-.2.5-.2h.4c.1 0 .3 0 .4.3l.6 1.4c.1.2 0 .3 0 .4l-.3.4-.3.3c-.1.1-.2.2-.1.4.2.4.7 1.1 1.4 1.8.9.8 1.7 1.1 1.9 1.2.2.1.3.1.5-.1l.6-.7c.2-.2.3-.2.5-.1l1.4.7c.2.1.3.2.4.3.1.2.1.6 0 1z" />\n </svg>\n ),\n};\n\nconst FALLBACK_ICON = (\n <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5" aria-hidden className="w-5 h-5">\n <circle cx="12" cy="12" r="9" />\n </svg>\n);\n\nexport async function Footer() {\n const year = new Date().getFullYear();\n return (\n <footer className="mt-12 px-6 sm:px-8 py-10 text-xs text-muted-foreground border-t border-border bg-card">\n <div className="max-w-7xl mx-auto">\n <div className="grid gap-10 md:grid-cols-[1.4fr_repeat(4,1fr)]">\n <div>\n <p className="font-serif text-2xl text-foreground m-0 mb-2">{brand.name}</p>\n <p className="leading-relaxed mb-4 max-w-sm">{brand.footer.blurb}</p>\n <address className="not-italic space-y-1">\n <p className="m-0">{brand.contact.address}</p>\n <p className="m-0">\n <a\n href={`tel:${brand.contact.phoneTel}`}\n className="hover:text-foreground transition-colors"\n >\n {brand.contact.phone}\n </a>\n </p>\n <p className="m-0">\n <a\n href={`mailto:${brand.contact.email}`}\n className="hover:text-foreground transition-colors"\n >\n {brand.contact.email}\n </a>\n </p>\n <p className="m-0">{brand.contact.hours}</p>\n </address>\n <div className="flex items-center gap-3 mt-5">\n {brand.socials.map((s) => (\n <a\n key={s.label}\n href={s.href}\n aria-label={s.label}\n target="_blank"\n rel="noopener noreferrer"\n className="inline-flex items-center justify-center w-9 h-9 rounded-full border border-border text-muted-foreground hover:text-foreground hover:border-foreground transition-colors"\n >\n {(s.icon && ICONS[s.icon]) ?? FALLBACK_ICON}\n </a>\n ))}\n </div>\n </div>\n {brand.footer.sitemap.map((section) => (\n <nav key={section.title} aria-labelledby={`footer-${section.title}`}>\n <p\n id={`footer-${section.title}`}\n className="font-semibold text-foreground mb-3 text-[13px] uppercase tracking-[0.08em]"\n >\n {section.title}\n </p>\n <ul className="space-y-2 m-0 p-0 list-none">\n {section.links.map((link) => (\n <li key={link.label}>\n <Link\n href={link.href}\n className="hover:text-foreground transition-colors"\n >\n {link.label}\n </Link>\n </li>\n ))}\n </ul>\n </nav>\n ))}\n </div>\n <div className="mt-12 pt-6 border-t border-border flex flex-col sm:flex-row items-center justify-between gap-3">\n <p className="m-0">\xA9 {year} {brand.name}. All rights reserved.</p>\n {brand.footer.poweredBy && (\n <p className="m-0 inline-flex items-center gap-1.5">\n <span className="text-muted-foreground/80">Powered by</span>\n <a\n href={brand.footer.poweredBy.href}\n target="_blank"\n rel="noopener noreferrer"\n aria-label={brand.footer.poweredBy.label}\n className="inline-flex items-center gap-1 font-serif text-foreground hover:text-primary transition-colors"\n >\n <span className="font-semibold tracking-tight">{brand.footer.poweredBy.label}</span>\n <svg\n viewBox="0 0 12 12"\n aria-hidden\n className="w-3 h-3 opacity-70"\n fill="none"\n stroke="currentColor"\n strokeWidth="1.5"\n >\n <path d="M3 9L9 3M9 3H4M9 3v5" strokeLinecap="round" strokeLinejoin="round" />\n </svg>\n </a>\n </p>\n )}\n </div>\n </div>\n </footer>\n );\n}\n' }, { "path": "components/product-modal.tsx", "kind": "text", "content": '"use client";\n\nimport { useEffect } from "react";\nimport Image from "next/image";\nimport { useRouter, useSearchParams, usePathname } from "next/navigation";\nimport { ProductSheet, useProduct, useCart } from "@cimplify/sdk/react";\n\n/**\n * URL-driven product modal. Reads `?product=<slug>` and renders the SDK\'s\n * `<ProductSheet/>` \u2014 vertical layout with image-on-top, then header, then\n * the variant/add-on/composite/bundle customizer. Closing the modal clears\n * the search param. Deep-linkable and survives reloads.\n */\nexport function ProductModal() {\n const router = useRouter();\n const pathname = usePathname();\n const searchParams = useSearchParams();\n const slug = searchParams?.get("product") ?? null;\n\n const { product } = useProduct(slug ?? "", { enabled: Boolean(slug) });\n const { addItem } = useCart();\n\n useEffect(() => {\n if (!slug) return;\n const original = document.body.style.overflow;\n document.body.style.overflow = "hidden";\n return () => {\n document.body.style.overflow = original;\n };\n }, [slug]);\n\n useEffect(() => {\n if (!slug) return;\n const onKey = (e: KeyboardEvent) => {\n if (e.key === "Escape") close();\n };\n window.addEventListener("keydown", onKey);\n return () => window.removeEventListener("keydown", onKey);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [slug]);\n\n if (!slug) return null;\n\n function close() {\n const next = new URLSearchParams(searchParams?.toString() ?? "");\n next.delete("product");\n const qs = next.toString();\n router.replace(qs ? `${pathname}?${qs}` : pathname, { scroll: false });\n }\n\n return (\n <div\n role="dialog"\n aria-modal="true"\n onClick={close}\n className="fixed inset-0 z-[100] flex items-end sm:items-center justify-center sm:p-6 bg-foreground/50 backdrop-blur-sm"\n >\n <div\n onClick={(e) => e.stopPropagation()}\n className="relative w-full sm:max-w-lg max-h-[92vh] overflow-auto bg-card sm:rounded-3xl rounded-t-3xl shadow-2xl"\n >\n <button\n onClick={close}\n aria-label="Close product details"\n className="absolute top-4 right-4 z-10 w-9 h-9 rounded-full bg-card border border-border text-sm cursor-pointer transition-colors hover:bg-muted"\n >\n \u2715\n </button>\n {product ? (\n <ProductSheet\n product={product}\n onClose={close}\n onAddToCart={async (p, qty, options) => {\n await addItem(p, qty, options);\n close();\n }}\n renderImage={({ src, alt, className }) => (\n <Image\n src={src}\n alt={alt}\n width={1200}\n height={900}\n className={className}\n style={{ width: "100%", height: "auto", objectFit: "cover" }}\n priority\n />\n )}\n classNames={{\n root: "p-6 sm:p-8 gap-4",\n image: "rounded-2xl overflow-hidden -mx-6 sm:-mx-8 -mt-6 sm:-mt-8 mb-2",\n header: "flex items-baseline justify-between gap-4",\n name: "font-serif text-2xl font-semibold m-0",\n price: "text-lg font-semibold text-primary",\n description: "text-sm text-muted-foreground leading-relaxed",\n customizer: "pt-2",\n }}\n />\n ) : (\n <div className="p-8 text-center text-muted-foreground">Loading\u2026</div>\n )}\n </div>\n </div>\n );\n}\n' }, { "path": "components/cart-drawer.tsx", "kind": "text", "content": '"use client";\n\nimport { useRouter } from "next/navigation";\nimport { CartDrawer as SdkCartDrawer } from "@cimplify/sdk/react";\n\n/**\n * Side-drawer cart. Auto-opens when an item is added (via\n * `<CartDrawerProvider>` in `providers.tsx`). The header\'s cart pill\n * also calls `useCartDrawer().open()` to reveal it on click.\n */\nexport function CartDrawer() {\n const router = useRouter();\n return <SdkCartDrawer onCheckout={() => router.push("/checkout")} />;\n}\n' }, { "path": "components/json-ld.tsx", "kind": "text", "content": 'import { brand } from "@/lib/brand";\nimport { getSiteUrl } from "@/lib/site-url";\n\n/**\n * Streams the organization JSON-LD script tag in async so it doesn\'t block\n * the rest of the layout shell. `getSiteUrl` reads request headers, and\n * any await on dynamic data inside `RootLayout` makes Next 16 mark the\n * whole route as blocking.\n */\nexport async function OrganizationJsonLd(): Promise<React.ReactElement> {\n const siteUrl = await getSiteUrl();\n const ld = {\n "@context": "https://schema.org",\n "@type": brand.schemaType,\n name: brand.name,\n url: siteUrl,\n description: brand.description,\n email: brand.contact.email,\n telephone: brand.contact.phoneTel,\n address: {\n "@type": "PostalAddress",\n streetAddress: brand.contact.streetAddress,\n addressLocality: brand.contact.city,\n addressCountry: brand.contact.countryCode,\n },\n sameAs: brand.socials.map((s) => s.href),\n };\n return (\n <script\n type="application/ld+json"\n dangerouslySetInnerHTML={{ __html: JSON.stringify(ld) }}\n />\n );\n}\n' }, { "path": "components/mobile-nav.tsx", "kind": "text", "content": '"use client";\n\nimport { useEffect, useState } from "react";\nimport Link from "next/link";\nimport { brand } from "@/lib/brand";\n\n/**\n * Hamburger button + slide-in drawer for narrow viewports. Header hides\n * its inline nav links below `sm` and renders this in their place; the\n * cart pill stays in the header chrome.\n */\nexport function MobileNav() {\n const [open, setOpen] = useState(false);\n\n useEffect(() => {\n if (!open) return;\n const onKey = (event: KeyboardEvent) => {\n if (event.key === "Escape") setOpen(false);\n };\n document.addEventListener("keydown", onKey);\n const previousOverflow = document.body.style.overflow;\n document.body.style.overflow = "hidden";\n return () => {\n document.removeEventListener("keydown", onKey);\n document.body.style.overflow = previousOverflow;\n };\n }, [open]);\n\n return (\n <>\n <button\n type="button"\n onClick={() => setOpen(true)}\n aria-label="Open menu"\n aria-expanded={open}\n aria-controls="mobile-nav-drawer"\n className="grid place-items-center w-11 h-11 -mr-2 rounded-md text-foreground hover:bg-muted transition-colors"\n >\n <svg\n width="20"\n height="20"\n viewBox="0 0 24 24"\n fill="none"\n stroke="currentColor"\n strokeWidth="2"\n strokeLinecap="round"\n strokeLinejoin="round"\n aria-hidden="true"\n >\n <line x1="3" y1="6" x2="21" y2="6" />\n <line x1="3" y1="12" x2="21" y2="12" />\n <line x1="3" y1="18" x2="21" y2="18" />\n </svg>\n </button>\n\n {open ? (\n <div className="fixed inset-0 z-50 sm:hidden">\n <button\n type="button"\n onClick={() => setOpen(false)}\n aria-label="Close menu"\n className="absolute inset-0 bg-background/80 backdrop-blur-sm"\n />\n <nav\n id="mobile-nav-drawer"\n aria-label="Mobile navigation"\n className="absolute inset-y-0 right-0 w-[85%] max-w-sm flex flex-col bg-background border-l border-border shadow-2xl"\n >\n <div className="flex items-center justify-between px-6 py-4 border-b border-border">\n <span className="text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground">\n Menu\n </span>\n <button\n type="button"\n onClick={() => setOpen(false)}\n aria-label="Close menu"\n className="grid place-items-center w-11 h-11 -mr-2 rounded-md text-foreground hover:bg-muted transition-colors"\n >\n <svg\n width="20"\n height="20"\n viewBox="0 0 24 24"\n fill="none"\n stroke="currentColor"\n strokeWidth="2"\n strokeLinecap="round"\n strokeLinejoin="round"\n aria-hidden="true"\n >\n <line x1="18" y1="6" x2="6" y2="18" />\n <line x1="6" y1="6" x2="18" y2="18" />\n </svg>\n </button>\n </div>\n <ul className="flex flex-col gap-1 px-3 py-4">\n {brand.header.nav.map((link) => (\n <li key={link.href}>\n <Link\n href={link.href}\n onClick={() => setOpen(false)}\n className="block px-3 py-3 rounded-md text-base font-medium text-foreground hover:bg-muted transition-colors"\n >\n {link.label}\n </Link>\n </li>\n ))}\n </ul>\n </nav>\n </div>\n ) : null}\n </>\n );\n}\n' }, { "path": "components/header.tsx", "kind": "text", "content": 'import Link from "next/link";\nimport { Suspense } from "react";\nimport { NavLink } from "./nav-link";\nimport { CartPill, CartPillSkeleton } from "./cart-pill";\nimport { MobileNav } from "./mobile-nav";\nimport { AccountPill } from "./account-pill";\nimport { brand } from "@/lib/brand";\n\n/**\n * Server-rendered header chrome. Brand mark + nav layout streams from the\n * cache; the active-link styling and live cart count are dynamic islands\n * mounted in their own Suspense boundaries so the chrome never blocks.\n */\nexport function Header() {\n return (\n <header className="sticky top-0 z-30 flex items-center justify-between px-6 sm:px-8 py-4 border-b border-border bg-background/90 backdrop-blur-md">\n <Link href="/" className="flex items-baseline gap-2">\n <span className="font-serif text-[22px] font-semibold -tracking-[0.02em]">\n {brand.shortName}\n </span>\n <span className="hidden sm:inline text-[11px] font-medium uppercase tracking-[0.12em] text-muted-foreground">\n {brand.microTag}\n </span>\n </Link>\n <div className="flex items-center gap-3 sm:gap-6">\n <nav className="hidden sm:flex items-center gap-6">\n {brand.header.nav.map((link) => (\n <Suspense key={link.href} fallback={<NavLinkFallback>{link.label}</NavLinkFallback>}>\n <NavLink href={link.href}>{link.label}</NavLink>\n </Suspense>\n ))}\n </nav>\n <AccountPill />\n <Suspense fallback={<CartPillSkeleton />}>\n <CartPill />\n </Suspense>\n <div className="sm:hidden">\n <MobileNav />\n </div>\n </div>\n </header>\n );\n}\n\nfunction NavLinkFallback({ children }: { children: React.ReactNode }) {\n return (\n <span className="text-[13px] font-medium tracking-wide text-muted-foreground">\n {children}\n </span>\n );\n}\n' }, { "path": "components/cart-pill.tsx", "kind": "text", "content": '"use client";\n\nimport { useCartDrawer } from "@cimplify/sdk/react";\nimport { useCartCount } from "@/lib/cart";\n\n/**\n * Cart pill \u2014 dynamic island. Reads the live cart count via the SDK and\n * opens the side cart drawer on click (instead of navigating to /cart).\n * Wrap in `<Suspense fallback={<CartPillSkeleton/>}>` so the cached\n * header chrome streams without blocking on the cart fetch.\n */\nexport function CartPill() {\n const { count } = useCartCount();\n const { open } = useCartDrawer();\n return (\n <button\n type="button"\n onClick={open}\n aria-label={`Open cart, ${count} ${count === 1 ? "item" : "items"}`}\n className="inline-flex items-center gap-1.5 px-4 py-2.5 sm:py-2 rounded-full bg-foreground text-background text-xs font-semibold tracking-wide transition-transform hover:scale-105 cursor-pointer"\n >\n Cart \xB7 {count}\n </button>\n );\n}\n\nexport function CartPillSkeleton() {\n return (\n <span\n aria-hidden\n className="inline-flex items-center gap-1.5 px-4 py-2.5 sm:py-2 rounded-full bg-foreground/80 text-background text-xs font-semibold tracking-wide"\n >\n Cart \xB7 \u2026\n </span>\n );\n}\n' }, { "path": "components/policy-page.tsx", "kind": "text", "content": 'import type { BrandPolicySection } from "@/lib/brand";\n\ninterface PolicyShape {\n eyebrow: string;\n title: string;\n lastUpdated?: string;\n sections: BrandPolicySection[];\n}\n\n/**\n * Shared layout for shipping / returns / accessibility / terms / privacy.\n * Reads a `{ eyebrow, title, lastUpdated, sections[] }` block from brand.\n */\nexport function PolicyPage({ policy }: { policy: PolicyShape }) {\n return (\n <article className="max-w-3xl mx-auto px-6 sm:px-8 py-16 prose prose-lg max-w-none">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2 not-prose">\n {policy.eyebrow}\n </p>\n <h1 className="text-[clamp(2.25rem,5vw,3.5rem)] font-semibold mb-2 -tracking-[0.02em]">\n {policy.title}\n </h1>\n {policy.lastUpdated && (\n <p className="text-sm text-muted-foreground not-prose mb-10">\n Last updated: {policy.lastUpdated}\n </p>\n )}\n <section className="space-y-5 leading-relaxed text-foreground/90">\n {policy.sections.map((s) => (\n <div key={s.heading}>\n <h2 className="text-2xl font-semibold mt-0">{s.heading}</h2>\n {typeof s.body === "string" ? (\n <p>{s.body}</p>\n ) : (\n <>\n <p>{s.body.intro}</p>\n <ul className="list-disc pl-6 space-y-2">\n {s.body.bullets.map((b) => (\n <li key={b}>{b}</li>\n ))}\n </ul>\n </>\n )}\n </div>\n ))}\n </section>\n </article>\n );\n}\n' }], "storefront-auto": [{ "path": "AGENTS.md", "kind": "text", "content": '# AGENTS.md \u2014 Auto-parts storefront template\n\nIf you are an AI agent working on this storefront, **start here.**\n\n## TL;DR for rebranding\n\n1. **Edit `lib/brand.ts`** \u2014 every visible string, plus the `fitments` make/model/year tree.\n2. **Edit `app/globals.css`** \u2014 `@theme { \u2026 }` block for palette + radius + font references.\n3. **Edit `.env.local`** \u2014 `NEXT_PUBLIC_CIMPLIFY_*` env vars.\n\n## Aesthetic\n\n- **Inter + JetBrains Mono** \u2014 clean modern sans, mono-spaced labels for spec-feel.\n- **Carbon-black foreground + sport-red accent.**\n- **Sharp corners**: `0.5rem` \u2014 workshop-modern.\n- **`AutoPartsStore`** is the Schema.org `@type` (set in `brand.schemaType`).\n\n## Page surface\n\n```\napp/\n page.tsx AutoHero + FitmentFinder + TrustBar + Most ordered\n grid + ServiceBrief + Newsletter\n shop/page.tsx SDK <CataloguePage/>. Reads `?fits=<tag>` to\n filter by fitment tag.\n search/page.tsx Search\n collections/[slug]/page.tsx Collection landing\n categories/[slug]/page.tsx Category landing\n products/[slug]/page.tsx Full product detail page (Product JSON-LD)\n cart/page.tsx, checkout/page.tsx, orders/[id]/page.tsx SDK\n account/* + login/signup\n contact/, track-order/, about, faq, terms, privacy, shipping, returns,\n accessibility/, sitemap-page/ Brand-driven content pages\n```\n\n## File \u2194 brand-field map\n\n| File | Reads from `brand` |\n|---|---|\n| `app/layout.tsx` | identity, contact, socials, schemaType (AutoPartsStore JSON-LD) |\n| `app/page.tsx` | `brand.hero`, `brand.fitments`, `brand.serviceBrief`, `brand.newsletter` |\n| `app/about/page.tsx` | `brand.about` |\n| `app/faq/page.tsx` | `brand.faq` |\n| `app/terms/page.tsx` | `brand.terms` |\n| `app/privacy/page.tsx` | `brand.privacy` |\n| `app/shipping/page.tsx` | `brand.shipping` |\n| `app/returns/page.tsx` | `brand.returns` |\n| `app/accessibility/page.tsx` | `brand.accessibility` |\n| `app/contact/page.tsx` | `brand.contactPage`, `brand.contact` |\n| `app/track-order/page.tsx` | `brand.trackOrder` |\n| `app/products/[slug]/page.tsx` | `brand.name`, `brand.currency` |\n| `app/llms.txt/route.ts` | `brand.llms`, contact, currency |\n| `components/auto-hero.tsx` | `brand.hero`, hard-coded trust-chip labels |\n| `components/fitment-finder.tsx` | `brand.fitments` (makes/models/years tree) |\n| `components/service-brief.tsx` | `brand.serviceBrief` (3 cards) |\n| `components/header.tsx`, `components/footer.tsx` | `brand.shortName`, `brand.header.nav`, `brand.footer`, `brand.contact`, `brand.socials` |\n| `components/trust-bar.tsx` | `brand.trustItems` |\n| `components/newsletter.tsx` | `brand.newsletter` |\n\n## Auto-specific notes\n\n- **Fitment is tag-based, not a custom_attribute.** Each product carries `tags: ["fits:toyota", "fits:toyota:corolla"]` etc. or `["fits:universal"]`. The shop page reads `?fits=<tag>` and filters by tag prefix match. Universal-fit products bypass the filter.\n- **Adding a vehicle**: edit `brand.fitments.makes` in `lib/brand.ts`. Add `{ slug, name, models: [...] }`. Slug becomes the URL fragment.\n- **Adding a part with new fitment**: tag the product `fits:<make>` and (optionally) `fits:<make>:<model>`. No schema change needed.\n- **Partner-workshop fitting**: the mock doesn\'t model this; the storefront copy describes it. To wire it, eject the cart drawer and add a "Add fitting (GH\u20B580)" toggle that adds a service line.\n\n## Known TODOs\n\n- Contact form + newsletter signup currently fake their submit. Wire to a real provider.\n- The fitment finder uses `useRouter().push` to a query-string URL; the catalogue page-side filter is left as an exercise for the merchant (read the `fits` param and pass it as a SDK `getProducts({ tags: [...] })` filter).\n\n## Mock seed\n\nWired to `--seed auto` (Driveline Auto Parts). Edit `dev:mock` in `package.json` to preview another seed.\n\n## Customizing SDK components\n\nFor anything beyond `lib/brand.ts` + `app/globals.css`, lean on the SDK\'s prebuilt components rather than reinvent. **Especially for product customization** (variants, add-ons, fitment-tag filtering, services with scheduling) \u2014 the SDK already gets price math, axis matching, tag filtering, and cart payload contracts right. Default to ejecting and restyling:\n\n```bash\ncimplify add cart-drawer\ncimplify add variant-selector\ncimplify add product-page\n```\n\nThen edit the local copy. **Don\'t change the cart payload shape** unless you\'re also touching the SDK mock + backend lens. Full ejection rules and the customizer contract are in the SDK-level [`AGENTS.md`](../../AGENTS.md) \u2192 "Don\'t reinvent product customization".\n\n## Quick start\n\n```bash\nbun install\nbun dev\n```\n\nOpen <http://localhost:3000>.\n' }, { "path": "__tests__/brand.test.ts", "kind": "text", "content": 'import { createBrandSuite } from "@cimplify/sdk/testing/suite";\nimport { brand } from "../lib/brand";\n\ncreateBrandSuite({ brand });\n' }, { "path": "__tests__/cart-flow.test.ts", "kind": "text", "content": 'import { createCartFlowSuite } from "@cimplify/sdk/testing/suite";\nimport { brand } from "../lib/brand";\n\ncreateCartFlowSuite({ seed: brand.mock.seed, businessId: brand.mock.businessId });\n' }, { "path": "__tests__/contract.test.ts", "kind": "text", "content": 'import { createContractSuite } from "@cimplify/sdk/testing/suite";\nimport { brand } from "../lib/brand";\n\ncreateContractSuite({ seed: brand.mock.seed });\n' }, { "path": "lib/auth.ts", "kind": "text", "content": 'import { headers } from "next/headers";\nimport {\n getAccessTokenFromCookieHeader,\n getServerClient,\n getSessionFromCookieHeader,\n type CimplifyClient,\n type CimplifySession,\n} from "@cimplify/sdk/server";\n\nconst CLIENT_ID = process.env.CIMPLIFY_CLIENT_ID ?? "";\nconst AUTH_URL = process.env.CIMPLIFY_AUTH_URL;\n\nconst oidcConfig = { clientId: CLIENT_ID, authUrl: AUTH_URL };\n\nexport async function getSession(): Promise<CimplifySession | null> {\n if (!CLIENT_ID) return null;\n const cookieHeader = (await headers()).get("cookie");\n return getSessionFromCookieHeader(oidcConfig, cookieHeader);\n}\n\n// Returns a Cimplify server client with the signed-in customer\'s access\n// token attached (if any). Use this instead of getServerClient() on pages\n// that need personalized data: orders, subscriptions, price-list pricing.\n// Pages without `revalidate: 0` will share a cache across customers, so\n// only use this on routes that opt out of static caching.\nexport async function getAuthenticatedServerClient(): Promise<CimplifyClient> {\n const cookieHeader = (await headers()).get("cookie");\n const accessToken =\n CLIENT_ID && cookieHeader\n ? getAccessTokenFromCookieHeader(oidcConfig, cookieHeader) ?? undefined\n : undefined;\n return getServerClient({ accessToken });\n}\n\nexport type { CimplifySession } from "@cimplify/sdk/server";\n' }, { "path": "lib/brand.ts", "kind": "text", "content": `/**
|
|
3089
3089
|
* Brand & content configuration \u2014 the **single source of truth** for every
|
|
3090
3090
|
* visible string in this storefront.
|
|
3091
3091
|
*
|
|
@@ -3836,7 +3836,7 @@ export const brand: Brand = {
|
|
|
3836
3836
|
* the root layout prerenderable.
|
|
3837
3837
|
*/
|
|
3838
3838
|
export const SITE_URL = "https://example.com";
|
|
3839
|
-
` }, { "path": "lib/site-url.ts", "kind": "text", "content": 'import { SITE_URL } from "./site.config";\n\n/** Canonical absolute URL for this storefront. */\nexport async function getSiteUrl(): Promise<string> {\n return SITE_URL;\n}\n' }, { "path": "lib/cimplify-loader.ts", "kind": "text", "content": 'import type { ImageLoader } from "next/image";\n\nimport { assetUrl, isCimplifyAsset } from "@cimplify/sdk";\n\nconst cdnBase = process.env.NEXT_PUBLIC_CIMPLIFY_CDN_URL?.trim() || undefined;\n\nconst cimplifyImageLoader: ImageLoader = ({ src, width, quality }) => {\n if (isCimplifyAsset(src, cdnBase)) {\n return assetUrl(src, {\n base: cdnBase,\n w: width,\n quality,\n format: "auto",\n });\n }\n return src;\n};\n\nexport default cimplifyImageLoader;\n' }, { "path": "lib/cart.ts", "kind": "text", "content": '"use client";\n\nimport { useCart } from "@cimplify/sdk/react";\n\n/**\n * Reactive cart count for the header pill. Subscribes to the SDK cart\n * state \u2014 updates immediately on add / remove / quantity change.\n */\nexport function useCartCount(): { count: number } {\n const { itemCount } = useCart();\n return { count: itemCount };\n}\n' }, { "path": ".gitignore", "kind": "text", "content": "node_modules\n.next\n.open-next\nout\n.env\n.env.local\n.env*.local\n.DS_Store\n*.tsbuildinfo\nnext-env.d.ts\n" }, { "path": "package.json", "kind": "text", "content": '{\n "name": "__STOREFRONT_NAME__",\n "private": true,\n "version": "0.0.0",\n "scripts": {\n "dev": "concurrently -k -n mock,next -c blue,magenta \\"cimplify-mock --seed auto --quiet\\" \\"next dev\\"",\n "dev:storefront": "next dev",\n "dev:mock": "cimplify-mock --seed auto",\n "build": "next build",\n "start": "next start",\n "typecheck": "tsc --noEmit",\n "test": "vitest",\n "test:run": "vitest run",\n "check:brand": "vitest run __tests__/brand.test.ts",\n "check:cart": "vitest run __tests__/cart-flow.test.ts",\n "check:contract": "vitest run __tests__/contract.test.ts",\n "check": "bun run typecheck && bun run test:run"\n },\n "dependencies": {\n "@cimplify/sdk": "^0.56.0",\n "next": "^16.2.6",\n "react": "^19.0.0",\n "react-dom": "^19.0.0"\n },\n "devDependencies": {\n "@tailwindcss/postcss": "^4.2.4",\n "@types/node": "^22.10.0",\n "@types/react": "^19.0.0",\n "@types/react-dom": "^19.0.0",\n "concurrently": "^9.0.0",\n "tailwindcss": "^4.2.4",\n "typescript": "^5.9.3",\n "vitest": "^4.1.5"\n }\n}\n' }, { "path": "bun.lock", "kind": "binary", "content": "ewogICJsb2NrZmlsZVZlcnNpb24iOiAxLAogICJjb25maWdWZXJzaW9uIjogMSwKICAid29ya3NwYWNlcyI6IHsKICAgICIiOiB7CiAgICAgICJuYW1lIjogIl9fU1RPUkVGUk9OVF9OQU1FX18iLAogICAgICAiZGVwZW5kZW5jaWVzIjogewogICAgICAgICJAY2ltcGxpZnkvc2RrIjogIl4wLjU0LjAiLAogICAgICAgICJuZXh0IjogIl4xNi4yLjYiLAogICAgICAgICJyZWFjdCI6ICJeMTkuMC4wIiwKICAgICAgICAicmVhY3QtZG9tIjogIl4xOS4wLjAiLAogICAgICB9LAogICAgICAiZGV2RGVwZW5kZW5jaWVzIjogewogICAgICAgICJAdGFpbHdpbmRjc3MvcG9zdGNzcyI6ICJeNC4yLjQiLAogICAgICAgICJAdHlwZXMvbm9kZSI6ICJeMjIuMTAuMCIsCiAgICAgICAgIkB0eXBlcy9yZWFjdCI6ICJeMTkuMC4wIiwKICAgICAgICAiQHR5cGVzL3JlYWN0LWRvbSI6ICJeMTkuMC4wIiwKICAgICAgICAiY29uY3VycmVudGx5IjogIl45LjAuMCIsCiAgICAgICAgInRhaWx3aW5kY3NzIjogIl40LjIuNCIsCiAgICAgICAgInR5cGVzY3JpcHQiOiAiXjUuOS4zIiwKICAgICAgICAidml0ZXN0IjogIl40LjEuNSIsCiAgICAgIH0sCiAgICB9LAogIH0sCiAgInBhY2thZ2VzIjogewogICAgIkBhbGxvYy9xdWljay1scnUiOiBbIkBhbGxvYy9xdWljay1scnVANS4yLjAiLCAiIiwge30sICJzaGE1MTItVXJjQUJCKzRiVXJGQUJ3Ymx1VElCRXJYd3Zic1UvVjdUWldmbWJnSmZia3dpQnV6aVM5Z3hkT0RVeXVpZWNmZEdRODVqZ2xNVzZqdVMzK3o1VHNLTHc9PSJdLAoKICAgICJAYmFiZWwvcnVudGltZSI6IFsiQGJhYmVsL3J1bnRpbWVANy4yOS4yIiwgIiIsIHt9LCAic2hhNTEyLUppRFNoSDQ1ektIV3lHZTRaTlZSckNqQno4Tmg5VE1tWkcxa2g0UVRLOGhDQlRXQmk4RGEraTdzMWZKdzcvbFlwTTRjY2VwU05mcXpaL1F2QUJCaTVnPT0iXSwKCiAgICAiQGJhc2UtdWkvcmVhY3QiOiBbIkBiYXNlLXVpL3JlYWN0QDEuNS4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBiYWJlbC9ydW50aW1lIjogIl43LjI5LjIiLCAiQGJhc2UtdWkvdXRpbHMiOiAiMC4yLjkiLCAiQGZsb2F0aW5nLXVpL3JlYWN0LWRvbSI6ICJeMi4xLjgiLCAiQGZsb2F0aW5nLXVpL3V0aWxzIjogIl4wLjIuMTEiLCAidXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUiOiAiXjEuNi4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBkYXRlLWZucy90eiI6ICJeMS4yLjAiLCAiQHR5cGVzL3JlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgImRhdGUtZm5zIjogIl40LjAuMCIsICJyZWFjdCI6ICJeMTcgfHwgXjE4IHx8IF4xOSIsICJyZWFjdC1kb20iOiAiXjE3IHx8IF4xOCB8fCBeMTkiIH0sICJvcHRpb25hbFBlZXJzIjogWyJAZGF0ZS1mbnMvdHoiLCAiQHR5cGVzL3JlYWN0IiwgImRhdGUtZm5zIl0gfSwgInNoYTUxMi16MWdTQWxjZWQxeVkraU0rbUhERXRJa0Q4VUkzRWJzNTJNdUJQeHZWNmY1aFJ1dGsreHZDSC93dUI3aERxRHpLOUpHNUZvTXo1bmhycXRTczF3anQxQT09Il0sCgogICAgIkBiYXNlLXVpL3V0aWxzIjogWyJAYmFzZS11aS91dGlsc0AwLjIuOSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYmFiZWwvcnVudGltZSI6ICJeNy4yOS4yIiwgIkBmbG9hdGluZy11aS91dGlscyI6ICJeMC4yLjExIiwgInJlc2VsZWN0IjogIl41LjEuMSIsICJ1c2Utc3luYy1leHRlcm5hbC1zdG9yZSI6ICJeMS42LjAiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL3JlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgInJlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgInJlYWN0LWRvbSI6ICJeMTcgfHwgXjE4IHx8IF4xOSIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkB0eXBlcy9yZWFjdCJdIH0sICJzaGE1MTIteC9QRERDWXpvcVBwanJkeWIzVmN5eWxUSTJJalVYRXRZREdpNWZvaDdLc25tTkpJSWFWd0EyR0xnREgxZHBzMUdnWGlKYkE2MGhNK0F5dVRmUXpJdnc9PSJdLAoKICAgICJAY2ltcGxpZnkvc2RrIjogWyJAY2ltcGxpZnkvc2RrQDAuNTQuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYmFzZS11aS9yZWFjdCI6ICJeMS40LjEiLCAiY2xzeCI6ICJeMi4xLjEiLCAiZGF0ZS1mbnMiOiAiXjQuMS4wIiwgImxpYnBob25lbnVtYmVyLWpzIjogIjEuMTIuNDEiLCAicmVhY3QtZGF5LXBpY2tlciI6ICJeOS4xNC4wIiwgInRhaWx3aW5kLW1lcmdlIjogIl4zLjUuMCIsICJ6b2QiOiAiXjQuNC4zIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBwYXlzdGFjay9pbmxpbmUtanMiOiAiXjIuMjIuOCIsICJtc3ciOiAiPj0yLjAuMCIsICJyZWFjdCI6ICI+PTE3LjAuMCIsICJ2aXRlc3QiOiAiPj0yLjAuMCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkBwYXlzdGFjay9pbmxpbmUtanMiLCAibXN3IiwgInJlYWN0IiwgInZpdGVzdCJdLCAiYmluIjogeyAiY2ltcGxpZnktbW9jayI6ICJkaXN0L21vY2svY2xpLm1qcyIgfSB9LCAic2hhNTEyLVlVTi9sT3FWaUhjaTF2OVVTV1d3QVd0eTI5cEVYQmRMVHVLYXJTbDhFcGFmV2g1amtkR1oxUStOZTkvYmZnVFptUjhpVFVsdEE4VTdnbFYyRm9SU2dnPT0iXSwKCiAgICAiQGRhdGUtZm5zL3R6IjogWyJAZGF0ZS1mbnMvdHpAMS40LjEiLCAiIiwge30sICJzaGE1MTItUDVMVU5odGJqNllmSTNpSmp3NUVMOWVVQUc2T2l0RDBXM2ZXUWNwUWpEUmMvUUlzTDB0Uk51TzFQY0R2UGNjV0wxZlNUWFhkRTFkcytsOTVEVi9PRkE9PSJdLAoKICAgICJAZW1uYXBpL2NvcmUiOiBbIkBlbW5hcGkvY29yZUAxLjEwLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGVtbmFwaS93YXNpLXRocmVhZHMiOiAiMS4yLjEiLCAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTIteXE2T2tKNHA4MkNBZlBsMHU5bVFlYlFIS1BKa1k3V3JJdWsyMDVjVFluWWUrazJaOFlCaDExRnJiUkcvSDZpaGlycWNhY09nbDJCSU84b3lNUUxlWHc9PSJdLAoKICAgICJAZW1uYXBpL3J1bnRpbWUiOiBbIkBlbW5hcGkvcnVudGltZUAxLjEwLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTItZXd2WWxrODZ4VW9HSTB6UVJOcS9tQysxNlIxUWVEbEtReTIxS2kzb1NZWE5nTGI0NUdWMVA2QTBNKy9zNm55Q3VORHFlNVZwYVk4NEJ6WEd3VmJ3RkE9PSJdLAoKICAgICJAZW1uYXBpL3dhc2ktdGhyZWFkcyI6IFsiQGVtbmFwaS93YXNpLXRocmVhZHNAMS4yLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTItdVRJSTdPWUYrL01lcy9NcmNJT1lwNXlPdFNNTEJXU0lvTFBwY2d3aXBvaUtibGk2azMyMnRjb0ZzeG9JSXhQRHFXMDFTUUdBZ2tvNEV6WmkyQk52Mnc9PSJdLAoKICAgICJAZXNidWlsZC9haXgtcHBjNjQiOiBbIkBlc2J1aWxkL2FpeC1wcGM2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYWl4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi0xVkNJQ1d5cGVRS2hWYkU5b1cvc0phQW1qTHhoVnFhY2RrdlBMRWp3bHR0amZ3RU5SU0NsUzhFakJ6MEt6UnlGU0NQRElrdVhXMzRKZS92azd6ZEI3UT09Il0sCgogICAgIkBlc2J1aWxkL2FuZHJvaWQtYXJtIjogWyJAZXNidWlsZC9hbmRyb2lkLWFybUAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtIiB9LCAic2hhNTEyLVFOZFFFcHM3RGZGd0UzaFhpVTRCWmVPVjY4SEh6WXdHZDBOdGhoZDN1Q2trRUtLNy9SNk1UZ00wUDdIN0ZBczVwVS9ESVdzdmlNbUVHeEVveElaK1pRPT0iXSwKCiAgICAiQGVzYnVpbGQvYW5kcm9pZC1hcm02NCI6IFsiQGVzYnVpbGQvYW5kcm9pZC1hcm02NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItYkJ5NjlwZ2ZoTUd0Q253cEMveDVRaGZ4QXovY0JnUTllbmJ0d2pmNlY5bG5QSS9oTXlUOWlXcFIxYXJtMGwza3R0VHI0TDBLU0xwS21McC9pbEtTOUE9PSJdLAoKICAgICJAZXNidWlsZC9hbmRyb2lkLXg2NCI6IFsiQGVzYnVpbGQvYW5kcm9pZC14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImFuZHJvaWQiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1UVmhkVnRRSUZ1VnBJSVIyODJidGNHQzJvR1FvU2ZaZm1CZFRpcDJhbkNhVlljcVdsWlhHY2RjS0lVa2xmWDJ3ajBKa2xOWWd6MzlPQnFoMmNxWHZjUT09Il0sCgogICAgIkBlc2J1aWxkL2Rhcndpbi1hcm02NCI6IFsiQGVzYnVpbGQvZGFyd2luLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVkxZ2lDZk00bmxIRFdFZlNja016ZVdOZFFTMzFCUUdzOS9yb3V3NlViOTF0a0s3OWFJTVRIM3E5eEh2ekg4ZDB3RHJ1NUNpMGtXQjhiM3VwL25sMTZnPT0iXSwKCiAgICAiQGVzYnVpbGQvZGFyd2luLXg2NCI6IFsiQGVzYnVpbGQvZGFyd2luLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiZGFyd2luIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItQ0pzcnk4WkdNNVZGVmV5VVlCM2NkS3BkL0g2OVBZZXo0ZUpoMVcvdDM4dnp1dGRqRWp0UDdoQjZlTEtCb09keGNBbEN0RVlIelEvUEovb1U5STR1MEE9PSJdLAoKICAgICJAZXNidWlsZC9mcmVlYnNkLWFybTY0IjogWyJAZXNidWlsZC9mcmVlYnNkLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi15WXErMzlObFRSelUyWG1vUFc0bDVJZnBsOWZxU2swbkFKWU0vVi9XVUdQRUZmZWsxZXBMSEpJa1RRTTZiQnMxc3dBcGpPNW5XZ3ZyODQzZzZUanh1UT09Il0sCgogICAgIkBlc2J1aWxkL2ZyZWVic2QteDY0IjogWyJAZXNidWlsZC9mcmVlYnNkLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiZnJlZWJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLTBGZ3ZPSjZVVU1mbHNIU1BMemRmRG5uQkJWb0NEdEJUVnluL01yV2xvVU52cS81U0ZtaDEzbDNkdmdSUGtEaWhSeGI3N1kxN01icWJDQWEyc3RyTVFRPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtYXJtIjogWyJAZXNidWlsZC9saW51eC1hcm1AMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTIta3JvNGMwUDg1R01mRllxVzRUV09wdm1GOHJGU2hiV0duckxxbHpwNFgxVE5XalJZM0pNWVVmREN0T3hQS09JWThCMFdDOEhONTFoR1A0STRoejRBYVE9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1hcm02NCI6IFsiQGVzYnVpbGQvbGludXgtYXJtNjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi0rODlVc1FUZlhkbWpJdlpTNm5Vbk9PTG9YbmtVVEI5aFI1UUFlTHJRZHpPU1dadk5TQVhBdGNSREhXdHFBVXRBbXY3Wk0xV1BPT2VTeER6enpNb2dpUT09Il0sCgogICAgIkBlc2J1aWxkL2xpbnV4LWlhMzIiOiBbIkBlc2J1aWxkL2xpbnV4LWlhMzJAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJpYTMyIiB9LCAic2hhNTEyLXlURWpvYXB5OFVQM3J2OGRCMGlwM0FmTXBSYnloU04zK2hZOG1vL2k0UVhGZUR4bWlZYkVLcDNaUmpCS2NPUDg2MlVhNGIxUERmd2x2YnV3WTdoSUdRPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtbG9vbmc2NCI6IFsiQGVzYnVpbGQvbGludXgtbG9vbmc2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItTmVxcVlrcmNHekZ3aTZDR1JHTk1PaldHR1NZT3Bxd0NqUzlmdmFVbFg1czN6d090bjFxd2cxczJpRTJzdkJlNFEvWU9HMXE2ODc1bGNBb1FLL0Y0VkE9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1taXBzNjRlbCI6IFsiQGVzYnVpbGQvbGludXgtbWlwczY0ZWxAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJub25lIiB9LCAic2hhNTEyLUljdlRsRjlkdExyZkwvTThXZ05JL3FKWUJFTlAzZWtnc0hiWVVJekV6cTVYSnp6VkVWL2ZYWTlXRlBmRUVYbXUzY2sycUpQOExHL3AzUThmN1pjMlhnPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtcHBjNjQiOiBbIkBlc2J1aWxkL2xpbnV4LXBwYzY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAicHBjNjQiIH0sICJzaGE1MTItSE95MGFMVEpUVnRvVGVHWmg0SFNYYU82TTk1cXU0azVsSmNINGd4djU2aWF5Y2Z6MVM4R08vNUpoNlg0WTFZaUkwaDdjUnlMaStIaXhNUis4OHN3YWc9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1yaXNjdjY0IjogWyJAZXNidWlsZC9saW51eC1yaXNjdjY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1pOEpVREF1ZnB6OWpPem80eUlTaENUY1h6UzA3dkVnV3p5WDNOSDJHN0xFRlZnckxFaGp3TDNhakZFNGZaSTNJNFpnaU03SkgzR1E3UmVPYlJPdlNVQT09Il0sCgogICAgIkBlc2J1aWxkL2xpbnV4LXMzOTB4IjogWyJAZXNidWlsZC9saW51eC1zMzkweEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogInMzOTB4IiB9LCAic2hhNTEyLWpGbnUrNlViTGx6SWpQUXBXQ05oNVF0cmNOZk1MamdJYXZud1BRQWZvR3g0cTE3b2NPVTlNc1EyUVZ2Rnh3UW9XcFpUOER2VExvb1R2bU9RWGtPNTFnPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgteDY0IjogWyJAZXNidWlsZC9saW51eC14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItNmUwY3ZYd3pPblZXSkhxK21za1A4RE5TcktCcjFiVUxCdm5GTHBjMUtZK2QraXJaU2daMDJUR3NlNUZzYWZLUzVqZzJlNHBidks2VFBYYUYvQTYrQ0E9PSJdLAoKICAgICJAZXNidWlsZC9uZXRic2QtYXJtNjQiOiBbIkBlc2J1aWxkL25ldGJzZC1hcm02NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibm9uZSIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItdlVua0JZeFpXNGhML2llOTFoU3FhU05qdWxPbllYRTFWU0x1c252SGcydTNqZXdKQnozWXpCOStvQ3c4REFCZVZxWkdnOTR0OXR5WkZvSG1hOGdXWlE9PSJdLAoKICAgICJAZXNidWlsZC9uZXRic2QteDY0IjogWyJAZXNidWlsZC9uZXRic2QteDY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJub25lIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItWEFnOHBJUW41Q3poT0I4b2RJY0FtNDJRc09mYTk4U0JlS1VkbzR4YThPdlg4TGJNWnFFdGdlV0U5UC9XeHQ3TWxHMlFxdmpHdGhzK25xNDhUclVpS3c9PSJdLAoKICAgICJAZXNidWlsZC9vcGVuYnNkLWFybTY0IjogWyJAZXNidWlsZC9vcGVuYnNkLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJvcGVuYnNkIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1DdDJXY0ZFQU5sRkR0cDFuVkFYU05CUER4eVUrajcrdElkLy9pSFhVMmYvbE41QW1PNHpMeWhEY3BSNUN6MXIwOG1WeHp0M0pweXQ0UG1YUTFPNis3QT09Il0sCgogICAgIkBlc2J1aWxkL29wZW5ic2QteDY0IjogWyJAZXNidWlsZC9vcGVuYnNkLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAib3BlbmJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLXhBR0doeU9ROU90bTFYdThOVDFpZkdMbkE2TTNzSnhaNml4eWxiK3ZJVVZ6dnZkNkdPQUxwd1FyWXJ0bFBvdU1xZC92U2JnZWh6NkhhVms0KzdBZmh3PT0iXSwKCiAgICAiQGVzYnVpbGQvc3Vub3MteDY0IjogWyJAZXNidWlsZC9zdW5vcy14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogInN1bm9zIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItTXcrdHp5NHBwNndaRUswK0x3cjc2cFdManJ0am1KeVVCMjN0SEtxRURQNzRSM3E5NWx1WS9iWHFYWmVZbDROWWx2d09xb1JLbEluUWlhbGdDS3k2N1E9PSJdLAoKICAgICJAZXNidWlsZC93aW4zMi1hcm02NCI6IFsiQGVzYnVpbGQvd2luMzItYXJtNjRAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1BVlVQNDI4VlFUU2RkZ3V6OWRPOW5nYitFNWFTY3lnN25PZUpEckYxSFBZdTU1NWdtemEzYkRHTVBobVZYTDhzdkRTb3FQQ3NDUGpiMjY1eUcva0xLUT09Il0sCgogICAgIkBlc2J1aWxkL3dpbjMyLWlhMzIiOiBbIkBlc2J1aWxkL3dpbjMyLWlhMzJAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJpYTMyIiB9LCAic2hhNTEyLWkxc1crMWkrb1d2UXpTZ2ZSY3h4RzJrNEk5bjNPOU5ScXk4VSt1dWdhVDJEeTdrTE85WTd3STcyaGFPYWh4Y2VNWDhoWkF6Z0dvdTFGaG5kUmxkeFJnPT0iXSwKCiAgICAiQGVzYnVpbGQvd2luMzIteDY0IjogWyJAZXNidWlsZC93aW4zMi14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItbk9UMnZaTnc2aEorejQzb1AxU1BlYS9HLzZBYk42WCtiR05oTnVxOE50Ukh5NHdzTWh3NzY1SUtMTm1uamVrN0d2aldCWVE4UTVWQm9ZVEZnOXkxVVE9PSJdLAoKICAgICJAZmxvYXRpbmctdWkvY29yZSI6IFsiQGZsb2F0aW5nLXVpL2NvcmVAMS43LjUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGZsb2F0aW5nLXVpL3V0aWxzIjogIl4wLjIuMTEiIH0gfSwgInNoYTUxMi0xSWg0V1RXeXcwK2xLeUZNY0JIR2JiNVU1RnR1SEp1dWpveXlyNXpUYVdTNUVZTWVUNkpiMkF1RGVmdHNDc0V1Y2hPK21NMmlqNStxOWNyaHlkekxoUT09Il0sCgogICAgIkBmbG9hdGluZy11aS9kb20iOiBbIkBmbG9hdGluZy11aS9kb21AMS43LjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGZsb2F0aW5nLXVpL2NvcmUiOiAiXjEuNy41IiwgIkBmbG9hdGluZy11aS91dGlscyI6ICJeMC4yLjExIiB9IH0sICJzaGE1MTItOWdaU0FJNVhNMzY4ODBQUE1tLy85ZGZpRW5nWW9DNkFtMml6RVMxRkY0MDZZRnNqdnlCTW1lSjJnNFNBanUzeFd3dHV5bk5SRkwyczloZ3hwTEk1U1E9PSJdLAoKICAgICJAZmxvYXRpbmctdWkvcmVhY3QtZG9tIjogWyJAZmxvYXRpbmctdWkvcmVhY3QtZG9tQDIuMS44IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBmbG9hdGluZy11aS9kb20iOiAiXjEuNy42IiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgInJlYWN0IjogIj49MTYuOC4wIiwgInJlYWN0LWRvbSI6ICI+PTE2LjguMCIgfSB9LCAic2hhNTEyLWNDNTJiSHdNL24vQ3hTODdGSDB5V2RuZ0VacmpkdExXL3FWcnVvNjhxZytwcks3WlE0WUdkdXQyR3lEVnBvR2VBWWUvaDg5OXJWZU9WbTZPaTQwazJBPT0iXSwKCiAgICAiQGZsb2F0aW5nLXVpL3V0aWxzIjogWyJAZmxvYXRpbmctdWkvdXRpbHNAMC4yLjExIiwgIiIsIHt9LCAic2hhNTEyLVJpQi95SWg3OHBjSXhsNmxMTUcwQ2dCWEFaMlkwZVZIcU1QWXVndSs5VTBBZVQ2WUJlaUpwZjdsYmRKTkl1Z0ZQNVNJandOUmdvNERoUjFReGkyNkdnPT0iXSwKCiAgICAiQGltZy9jb2xvdXIiOiBbIkBpbWcvY29sb3VyQDEuMS4wIiwgIiIsIHt9LCAic2hhNTEyLVRkNzZxN2o1N28vdExWZGdTNzQ2Y1lBUmZTeXhrOGlFZlJ4ZXdMOWg0T016WWhiVzRUQWNwcGwwbVQ0ZXlxWGRkaDZML2p3b003NW1vN2l4YS9wQ2VRPT0iXSwKCiAgICAiQGltZy9zaGFycC1kYXJ3aW4tYXJtNjQiOiBbIkBpbWcvc2hhcnAtZGFyd2luLWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiAiMS4yLjQiIH0sICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLWltdFEzV01KWGJNWTRmeGIvTmRwNkhCVE5WdFdDVUkwV2RvYnloZUdmNSthZDZ4WDhWSURPOHUyeEU0cWMvZnIwOENLRy83ZERzZUZ0bjZNNmcvcjN3PT0iXSwKCiAgICAiQGltZy9zaGFycC1kYXJ3aW4teDY0IjogWyJAaW1nL3NoYXJwLWRhcndpbi14NjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWRhcndpbi14NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1ZTkVGQUYvNEtRL1BlVzBOK3IrYVZWc29JWTAvcXh4aWtGMlNXZHArTlJrbU1CN3k5TEJaQVZxUTR5aEdDbS9IM0gyNzBPU3lrcW1RTUtMQmhCSkRFdz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjRAMS4yLjQiLCAiIiwgeyAib3MiOiAiZGFyd2luIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi16cWpqbzdSYXRGZkZvUDBNa1E1MWpmdUZaQm5WRTJwUmlheWRLSjFHL3JIWnZuc3JIQU9jUUFMSWk5c0E1Y281eGVuUWRUdWdDdnRiMWN1Zjc4VmY0Zz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4teDY0IjogWyJAaW1nL3NoYXJwLWxpYnZpcHMtZGFyd2luLXg2NEAxLjIuNCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi0xSU9kNXhmVmhsR3dYK3pYdjJOOTNrMHlNT052VWxBTnlsYkp3MWVUYWg4Sy9KdHBpMTVLQytXU2lhWC9uQm1ibTJIeFJNMWdaMG5TZGpTc3JaYkdLZz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm0iOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm1AMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybSIgfSwgInNoYTUxMi1iRkk3eGNLRkVMZGlOQ1ZvdjhlNDRJYTR1MmJ5QStsM1h0c0FqK1E4dGZDd082QlE4aURvallkdm9QTXFzS0RrdW9PbytYNkhaQTBzMHExMUFOTVE4QT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm02NCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybTY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1leGNqWDhEZnNJY0oxMHgxS3pyNFJjV2UxZWRDOVBxdURSUlB4M1lWQ3ZRditVNXA3WWluMnMzMmZ0emlrWG9qYjFQSUZjLzlNdDI4L3kraVJrbGtydz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1wcGM2NCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi1GTXV2R2lqTERZRzZsVytiL1V2eWlsVVd1NUF5dSszcjJkMVM4bm90aUdDSXlZVS83NmVpZzFVZk1ta1o3dndnT3J6S3psUWJGU3VRZmdtN0dZVVBwQT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1yaXNjdjY0IjogWyJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgtcmlzY3Y2NEAxLjIuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1vVkRiY1I0elVDMGNlODJ0ZXViU20reDZFVGl4dEtaQmgvcWJSRUlPY0kzY1VMekR5YjE4U3IvV2N5eDdOUlFlUXpPaUhUTmJaRkYxVXdQUzJzY3lHQT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1zMzkweCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXMzOTB4QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJzMzkweCIgfSwgInNoYTUxMi1xbXA5VnJ6Z1BnTW9HWnlQdnJRSHFrMDJ1eWpBMC9RclRPMjZUcWs2bDRaVjBNUFdJVzZMVGtxT0lvditKMXlFdTdNYkZRYURwd2R3SktoYkp2dVJ4UT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjRAMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi10SnhpaUxzbUhjOUF4MWJ6M29hT1lCVVJUWEdJUkRPREJxaHZlVkhvbnJISjkvK2s4OXFiTGwwYmNKbnMrZTR0NHJ2YU5CeGFFWnNGdFNmQWRxdVBydz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjRAMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLUZWUUh1d3gxSUl1Tm93OVFBYllVekorRW44S2NWbTlMazUrdUdVUUpIYVptTUVDWm1PbGl4OUhuSDduMVRSa1hNUzBwR3hJSm9rSVZCOVN1cVpHR1h3PT0iXSwKCiAgICAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4bXVzbC14NjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wteDY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItK0xweUJrN0w0NFpJWHd6L1ZZZmdsYVgvb2t4ZXpFU2M2VXhEU295bzJLczZKeGM0WTdzR2pwZ1U5czRQTWdxZ2pqMWdaQ3lsVGllTmFtcUExTUY3RGc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4LWFybSI6IFsiQGltZy9zaGFycC1saW51eC1hcm1AMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybSI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItOWRMcXN2d3RnMXV1WEJHWktzeGVtOTU5NSt1anYwc0o2Vmk4d2NUQU5TRnB3Vi9HT05hdDVlQ2t6UW8vMU82elJJa2gwbS84KzVCanJScjdqRFVTWnc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4LWFybTY0IjogWyJAaW1nL3NoYXJwLWxpbnV4LWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm02NCI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1iS1F6YUpSWS9ia1BPWHlLeDVFVnVwN3FrYW9qRUNHNk5MWXN3Z2t0T1pqYVhlY1NBZUNXaVp3d2lGZjMvWStPMUhyYXVpRTNGVnNHeEZnOGMyNHJaZz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGludXgtcHBjNjQiOiBbIkBpbWcvc2hhcnAtbGludXgtcHBjNjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0IjogIjEuMi40IiB9LCAib3MiOiAibGludXgiLCAiY3B1IjogInBwYzY0IiB9LCAic2hhNTEyLTd6em53TmFxVzZZdHNmckdHREE2QlJrSVNLQUFFMUpvMFFkcE5ZWE5NSHUyKzBkVHJQZmxUTE5rcGM4bDdNVVA1TTE2WkpjVXZ5c1ZXV3JNZWZacXVBPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eC1yaXNjdjY0IjogWyJAaW1nL3NoYXJwLWxpbnV4LXJpc2N2NjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXJpc2N2NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi01MWdKdUxQVEthN3BpWVBhVnM4R21CeW83L1U3LzdUWk9xK2NuWEpJSFpLYXZJUkhBUDc3ZTNOMkhFbDNkZ2lxZEQvdzB5VWZpSm5JSTc3UHVEREZkdz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGludXgtczM5MHgiOiBbIkBpbWcvc2hhcnAtbGludXgtczM5MHhAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXMzOTB4IjogIjEuMi40IiB9LCAib3MiOiAibGludXgiLCAiY3B1IjogInMzOTB4IiB9LCAic2hhNTEyLW5RdENrMFBkS2ZobzNlQzVNcmJRb2lnSjJnZDFDZ2RkVU1rYWJVaityQmV2czh0WjJjVUxPeDQ2RTdveVgrMDRXR2ZBQmdJd21NQzBWcWllVGlSNGpnPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eC14NjQiOiBbIkBpbWcvc2hhcnAtbGludXgteDY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLU1FemQ4SFBLeFZ4VmVud0FhK0pSUHdFQzdRRmpvUFd1UzVOWm5CdDZCM3B1N0VHMkdlMGlkMW9MSFpwUEpkbjNPUUsrQlFEaXc5elN0aUhCVEpRUVFRPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eG11c2wtYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGludXhtdXNsLWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItZnBySlI2R3RSc010Nkt5ZnE0NElzQ2hWWmVHTjk3Z1REMzMxd2VSMWV4MWMxcnlwREVBQk42VG0yeGExd0U2bFliNURkRW5rMDNOWlBxQTdJZDIxeWc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4bXVzbC14NjQiOiBbIkBpbWcvc2hhcnAtbGludXhtdXNsLXg2NEAwLjM0LjUiLCAiIiwgeyAib3B0aW9uYWxEZXBlbmRlbmNpZXMiOiB7ICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXhtdXNsLXg2NCI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSmc4d05UMU1Vekl2aEJGeFZpcXJFaFdER3pxeW1vM3NWN3o3WnNhV2JaTkRMWFJKWm9SR3JqdWxwNjBZWXRWNHdmWThWSUtjV2lkam9qbExjV3JkOFE9PSJdLAoKICAgICJAaW1nL3NoYXJwLXdhc20zMiI6IFsiQGltZy9zaGFycC13YXNtMzJAMC4zNC41IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvcnVudGltZSI6ICJeMS43LjAiIH0sICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1PZFdURWlWa1kyUEh3cWtiQkk4ZnJGeFFRRmVrSGFTU2tVSUprd3pjbFdaZTY0TzFYNFVsVWpxcXFMYVBiVXBNT1FrNkZCdS9IdGxHWE5ibElzMGh1dz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzItYXJtNjQiOiBbIkBpbWcvc2hhcnAtd2luMzItYXJtNjRAMC4zNC41IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1XUTNBZ1dDV1lTYjJ5dCtJRzhtbkM2SmRrOVdoczdPMGd4cGhibHNMdmRoU3BTVHRtdTY5WkcxR2tiNk51dnhzTkFDd2lQVjZjTlNaTnp0MEtQc3c3Zz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzItaWEzMiI6IFsiQGltZy9zaGFycC13aW4zMi1pYTMyQDAuMzQuNSIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAiaWEzMiIgfSwgInNoYTUxMi1GVjltLzdObWVDbVNIREQ1ajQrNHBOSThDcDNhVytKdkxvWGNUVW8wSXF5alNmQVpKOGRJVW1pangxcWFKc0lpVStIb3N3NnhNNUtpakFXUkpDU2dOZz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzIteDY0IjogWyJAaW1nL3NoYXJwLXdpbjMyLXg2NEAwLjM0LjUiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi0rMjlZTXNxWTIvOWVGRWlXOTNlcVdudUxjV2N1Zm93WGV3d1NOSVQ2VXdaZFVVQ3JNM29Gak1XSC9aNi9UTW1iNGhsRmVubWZBVmJwV2V1cDJqcnlDdz09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogWyJAanJpZGdld2VsbC9nZW4tbWFwcGluZ0AwLjMuMTMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjIjogIl4xLjUuMCIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjQiIH0gfSwgInNoYTUxMi0ya2t0LzduaUo2TWdFUHhGMGJZZFE2ZXRaYUErZlF2RGNMS2NraHkxeUlRT3phb0tqQkJqU2o2My9hTFZqWUUzcWhSdDVkdk0rdVV5ZkNnNlVLQ0JiQT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3JlbWFwcGluZyI6IFsiQGpyaWRnZXdlbGwvcmVtYXBwaW5nQDIuMy41IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogIl4wLjMuNSIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjQiIH0gfSwgInNoYTUxMi1MSTl1LytsYVlHNERzMVRES1NKVzJZUHJJbGNWWU93aTJmVUM2eEI0M2x1ZUNqZ3hWNGxmZk9DWkN0WUZpSDZUTk9YK3RRS1h4OTdUNElLSGJoeUhFUT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3Jlc29sdmUtdXJpIjogWyJAanJpZGdld2VsbC9yZXNvbHZlLXVyaUAzLjEuMiIsICIiLCB7fSwgInNoYTUxMi1iUklTZ0NJalAyMC90YldTUFdNRWk1NFFWUFJaRXhrdUQ5bEpMK1VJeFVLdHdWSkE4d1cxVHJiMWpNczFSRlhvMUNCVE5aLzVocEM5UXZtS1dkb3BLdz09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3NvdXJjZS1tYXAiOiBbIkBqcmlkZ2V3ZWxsL3NvdXJjZS1tYXBAMC4zLjExIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogIl4wLjMuNSIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjUiIH0gfSwgInNoYTUxMi1aTXAxVjhaRmNQRzVkSVduUUxyM05TSTFNaUNVN1VFVGRTL0EwRzhWL1hXSHZKdjNac0ZxdXRKbjFZNVJQbUFQWDZGM0JpRTM5N09xdmVVLzlOQ3VJQT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3NvdXJjZW1hcC1jb2RlYyI6IFsiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjQDEuNS41IiwgIiIsIHt9LCAic2hhNTEyLWNZUTkzMTBncnF4dWVXYmwrV3VJVUlhaVVhRGNqN1dPcTVmVmhFbGpOVmdSZk9VaFk5ZnkyelR2Zm9xV3NuZWJoOFNsNzBWU2NGYklDdkpuTEtCME9nPT0iXSwKCiAgICAiQGpyaWRnZXdlbGwvdHJhY2UtbWFwcGluZyI6IFsiQGpyaWRnZXdlbGwvdHJhY2UtbWFwcGluZ0AwLjMuMzEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvcmVzb2x2ZS11cmkiOiAiXjMuMS4wIiwgIkBqcmlkZ2V3ZWxsL3NvdXJjZW1hcC1jb2RlYyI6ICJeMS40LjE0IiB9IH0sICJzaGE1MTItenpOUitTZFFTREp6Yzhqb2FlUDhRUW9DUXI4TnVZeDJkSUl5dGwxUWVCRVpISjl1VzZoZWJzcllnYno4aEp3VVFhbzNUV0NNdG1mVjhOdTF0d09MQXc9PSJdLAoKICAgICJAbmFwaS1ycy93YXNtLXJ1bnRpbWUiOiBbIkBuYXBpLXJzL3dhc20tcnVudGltZUAxLjEuNCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAdHlieXMvd2FzbS11dGlsIjogIl4wLjEwLjEiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQGVtbmFwaS9jb3JlIjogIl4xLjcuMSIsICJAZW1uYXBpL3J1bnRpbWUiOiAiXjEuNy4xIiB9IH0sICJzaGE1MTItM05RTk5nQTFZU2xKYi9rTUgxaWxkQVNQOUhXNy83a1luUkkyc3pXSmFvZmFTMWhXbWJHSTRIK2QzKzIyYUd6WFhOOUlKK24rR2lGVmNHaXBKUDE4b3c9PSJdLAoKICAgICJAbmV4dC9lbnYiOiBbIkBuZXh0L2VudkAxNi4yLjYiLCAiIiwge30sICJzaGE1MTItZ2Q4SG9ITjR1Zmo3M1dtUjNKbVZvbHJwSlI0N0lMSzZMb3VQNXhFbFBnbGFWeGlyNmUxYTdWenZUdkRXa09vUFhUOXJra1R6eUN4QnU0eWVaZlp3Y3c9PSJdLAoKICAgICJAbmV4dC9zd2MtZGFyd2luLWFybTY0IjogWyJAbmV4dC9zd2MtZGFyd2luLWFybTY0QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVpKR2trY05mWWdyck1rcU9kWjd6b0xhMVRPeTBxcGNNZmsvejRNaC9GS1V6NDBnVk8rSE5RV3FtTHhmNjdaNVdCNjREUnAwZGhFYnlIZmVsKzZzSlVnPT0iXSwKCiAgICAiQG5leHQvc3djLWRhcndpbi14NjQiOiBbIkBuZXh0L3N3Yy1kYXJ3aW4teDY0QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi12L1lMQkhJWTEzMkNlZDNwdUJKN1lKS3cxbHFzQ3JnY05vMmFSSmxDRXlRcnJDZVJKbHZHbG5teGhQeE5RSTNLRTNOMURONXI5VFBOUHZrYTNucTVSUT09Il0sCgogICAgIkBuZXh0L3N3Yy1saW51eC1hcm02NC1nbnUiOiBbIkBuZXh0L3N3Yy1saW51eC1hcm02NC1nbnVAMTYuMi42IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1SUE92cWxZQmJjUWprejlWUVFEWjJUMmJBUklqWFpWMUtGbHQrVjJNcjZTVy9lNEk5ZmNLc2FBMGhkeWYyRkhvVGxzVjJ4bkJkNVk5MTJyUC8xQ2U2dz09Il0sCgogICAgIkBuZXh0L3N3Yy1saW51eC1hcm02NC1tdXNsIjogWyJAbmV4dC9zd2MtbGludXgtYXJtNjQtbXVzbEAxNi4yLjYiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVVSVVR1MStkTWt4SnNQRmdtK09lRXZxOXdmNXN1ancwRXZnWXk4MFRER0hUU0xUbklIZXFiMEV1OEEzc0M5NUlSZ2plalFMK2tDNG13KzR5UHhpQVhBPT0iXSwKCiAgICAiQG5leHQvc3djLWxpbnV4LXg2NC1nbnUiOiBbIkBuZXh0L3N3Yy1saW51eC14NjQtZ251QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLURPajE4Mm1QVjhHM1VrcmF5TG9SRU01WUVZSStEazV3djdPeDl4bDFmRmliQUVMRXNGRDBsRFBmSEllSUxsdXRNTWZkeWhsellQRUxHM3BldUthdXJ3PT0iXSwKCiAgICAiQG5leHQvc3djLWxpbnV4LXg2NC1tdXNsIjogWyJAbmV4dC9zd2MtbGludXgteDY0LW11c2xAMTYuMi42IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSEtRNVNQL1YvdWI3M1V2RjduL3plSmx4azJrTG10TDdXenJnNFdmbWtqbU5vczVvbkoydEt1N3laT1BkTDE4QTZTdmZuM21heDI5eW0rcnk3TmtLNGc9PSJdLAoKICAgICJAbmV4dC9zd2Mtd2luMzItYXJtNjQtbXN2YyI6IFsiQG5leHQvc3djLXdpbjMyLWFybTY0LW1zdmNAMTYuMi42IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1MWlhwVGxQeVM1djdIaFNtbnZzTEdQM2lJWWdZT0JuYzhyOEFybFQ1NXNHSFY4OWJSMkhsRGRCaldRK1BZNlNKTW1rOFR1VkdGdXhhbG5QM2svMER3Zz09Il0sCgogICAgIkBuZXh0L3N3Yy13aW4zMi14NjQtbXN2YyI6IFsiQG5leHQvc3djLXdpbjMyLXg2NC1tc3ZjQDE2LjIuNiIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLUYwKzRpMGg5SjZDNGVFM0VBUFdzb0NrN1VXL2Riek9qeXp4WTBxbkRVT1lGdTZGRm1kWjZsOTcvWGRWMy9OejNWWXlPN1VXanlFSlVYa0dxY29YZk1BPT0iXSwKCiAgICAiQG94Yy1wcm9qZWN0L3R5cGVzIjogWyJAb3hjLXByb2plY3QvdHlwZXNAMC4xMzAuMCIsICIiLCB7fSwgInNoYTUxMi1pYkQydXN4OUpSdTdmNXB1MnRNS01JNGNwQTROZ1hKUW9ZUlA0cFE3UHhtbjFsNmsvNTNxV3RRV1pheWhZeTNYNFFaa3Q5ME90K21KRWFlWG91aW82UT09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWFuZHJvaWQtYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLWFuZHJvaWQtYXJtNjRAMS4wLjEiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItZkpJM0kwcjNDM09qL3pkQkNwYUNtQlJaWWYwN3hwYXE0eUNmRERvU0ZtK2JlV056YklsMjZwdVc4UnJhVWR1Z29Kdy85NXplck5PbjZqYXNBaHpTbWc9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1kYXJ3aW4tYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLWRhcndpbi1hcm02NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLWNLbkFoV0VzVjdUUGNBLzVFQXRlRHA2S2NKWkJRMkcrQnFFN3pheU1NaTdrTXZ3UnNidjdXVDlhT25uMFdObDRTS0VJZjQzdmpTMzFpVVB1ODBuelhnPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NCI6IFsiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1ZS3JWd1FqSVJCUG8rNUcvdTAzd0dqYmR5NHE3cHl6Q2U5M0RLOVZKN3prVm1lZzhMSjdHYmdzaUhXZFI0eFNvZTRDQVhSRDdCY2pnYnRyNjRia1hOZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWZyZWVic2QteDY0IjogWyJAcm9sbGRvd24vYmluZGluZy1mcmVlYnNkLXg2NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItei9vQnNSRW80NlNzRnFCd1l0RmUwa3BKZUJpakFUNDhPL1dYTEk0c3VpQ0xCa3IwM1JUdFRKTUN6U2REZDJ6bmxoOFZKaXpMMDlYVmtRZ2s4SVpvbnc9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmQDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItaWs4cTdHTTExenh2WXhGYzJQZURjVDZUQnZoQ1FNYVV4ZnBoL001bDlzS3VUcy9TamczTCtCeXcwRjd3MFpWTEJabXgzMFArZ0cwRUN6ek4rTUZjbVE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1nbnUiOiBbIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LWFybTY0LWdudUAxLjAuMSIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItUW9TeDJFa3lycmRaNmtjeUU4c3RxWjYydDBZcmE4RnM1aWE5bE94SnJoNlRNUUpLN2dRS21zY2RUSGY3cE9YS1JFS3JWd090SmNRRzNxVlNmYzg2NkE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsQDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi11d053RnB3S2VOaVphd2ZBV0JnZzBWSXp0UFRWM2loaGgxdlYzMzRoOWl2bk5Mb3J4blFNVTZGejh3RzFaYjRRaDlMQzEvTWtjeVQzWWxEWEczUnNnZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXBwYzY0LWdudSI6IFsiQHJvbGxkb3duL2JpbmRpbmctbGludXgtcHBjNjQtZ251QDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi16WTFidWw3T1dyN0RGQmlKKyt3b2ZYdm5yOEI0NWNlM1FzUVVoS3JJaFhzeWdBaDdiVGt3eWVNMWJpMWEyZzVDL3lDL044VFp5R0RFb01mbS9sOW1wZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXMzOTB4LWdudSI6IFsiQHJvbGxkb3duL2JpbmRpbmctbGludXgtczM5MHgtZ251QDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJzMzkweCIgfSwgInNoYTUxMi0wZnJsc1QvZjRGdDZJN1NNRVNUS25GM2Nac2RpY1FuMWRDTWtGL2pUOXdETEUrZ0dvaVFmdjFubVQ5ZStzN3MvZmVrdnZ5NnRaTTJqSHZJMnRrYkpEUT09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1nbnUiOiBbIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1nbnVAMS4wLjEiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1YQUJWbUdwOVRnMFdzcFRWdndkdVRjNGZwcXk2Sm5BVXJTUWU2T3V5cUQvMDNuSTdyME85T1dVa01Jd0ZyaktBSXFvbHZxb0E0WnJKcHBnd0UwR3htdz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1tdXNsIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC14NjQtbXVzbEAxLjAuMSIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLWJWNGZ6c3d1elZjS0Q5MG8vVk02UXFLeG54bERxMGcyQklTRExOVm14cm5ocHYxRERieVBoQ0lqWWZ2ellMVitNdmtLS25RdDJRNkFPODZTRUJVTFVRPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctb3Blbmhhcm1vbnktYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLW9wZW5oYXJtb255LWFybTY0QDEuMC4xIiwgIiIsIHsgIm9zIjogIm5vbmUiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLS9NaDBaaHEzT1A3ZlZzMGtjUUhaUDZsWkV0aE1HVGFTZjhVQlFZU0ZFWkRXR1hYbEVDK25KNkVxZW5hSzJ0NExCWE1lM0ErSy9HMkJWWFhkdE9yNFBRPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctd2FzbTMyLXdhc2kiOiBbIkByb2xsZG93bi9iaW5kaW5nLXdhc20zMi13YXNpQDEuMC4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvY29yZSI6ICIxLjEwLjAiLCAiQGVtbmFwaS9ydW50aW1lIjogIjEuMTAuMCIsICJAbmFwaS1ycy93YXNtLXJ1bnRpbWUiOiAiXjEuMS40IiB9LCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItKzF4YzlYNDVsOHVmc0JBbTZHanZ4MnFEUklZOWxUVnQwY2dXTmNKKzFnZGhYdmtieGVQQTYweVJUd1NUdVhMMDlDTWh5Sm1qcFY3RTNOb3l4YnFGUVE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjIjogWyJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjQDEuMC4xIiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi0xRCtVcVpkZm51UitKeTFHZ01Kd2k4NWJENDBIMjF1Tm1PUFJXUWh3NG9SU3VvbFovQjVyaXhaNDVESzJLWE9UQ3ZtVkNlY2F1V2dFaGJ3OGJJN3RPdz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLXdpbjMyLXg2NC1tc3ZjIjogWyJAcm9sbGRvd24vYmluZGluZy13aW4zMi14NjQtbXN2Y0AxLjAuMSIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLUlOQXljYVd1aGxPSzN3azRtUkhHc2Rnd1lXbWQ5Y0NoZFBkRTlid1dteTZybjlWcVZOWU5GR2hPZFhyb2ZYVXh3SEluY1NpUE5iOHRObThrbkRWSWVRPT0iXSwKCiAgICAiQHJvbGxkb3duL3BsdWdpbnV0aWxzIjogWyJAcm9sbGRvd24vcGx1Z2ludXRpbHNAMS4wLjEiLCAiIiwge30sICJzaGE1MTItMmo5Ykd0NUpoOGhqK3ZQdGd6UHRsNzJqMHlSeEhBeXVtb282VE5mQWpzTEIwNFV0cFN2UGJQY0RjQk14ejduKzlDWUIwYzFHeFFGeFlSZzJqaW1xR3c9PSJdLAoKICAgICJAc3RhbmRhcmQtc2NoZW1hL3NwZWMiOiBbIkBzdGFuZGFyZC1zY2hlbWEvc3BlY0AxLjEuMCIsICIiLCB7fSwgInNoYTUxMi1sMmFGeTVqQUxobmlHNUhncXJENmpYTGkvclVXckt2cU4vcUp4NnlvSnNnS2hibFZkK2lxcVU0UkNYYXZtL2pQaXR5RG81VEN2S01ucGpLbk9yaXkwdz09Il0sCgogICAgIkBzd2MvaGVscGVycyI6IFsiQHN3Yy9oZWxwZXJzQDAuNS4xNSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi44LjAiIH0gfSwgInNoYTUxMi1KUTVUdU1pNDVPd2k0L0JJTUFKQm9TUW9PSnUxMm9Pay9nQURxbGNVTDlKRWRIQjh2eWpVU3N4cWVOWG5tWEhqWUtNaTJXY1l0ZXpHRUVocVVJL0UyZz09Il0sCgogICAgIkB0YWJieV9haS9oaWpyaS1jb252ZXJ0ZXIiOiBbIkB0YWJieV9haS9oaWpyaS1jb252ZXJ0ZXJAMS4wLjUiLCAiIiwge30sICJzaGE1MTItcjViQ2xLcmNJdXNEb28wNDlkU0w4Q2F3bkhSNm1SZER3aGxRdUlnWlJOdHk2OHEweDhrM0xmMUJ0UEFNeFJmL0dnbkhCbklPNHVqZDMrR1FkTFd6eFE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvbm9kZSI6IFsiQHRhaWx3aW5kY3NzL25vZGVANC4zLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvcmVtYXBwaW5nIjogIl4yLjMuNSIsICJlbmhhbmNlZC1yZXNvbHZlIjogIl41LjIxLjAiLCAiaml0aSI6ICJeMi42LjEiLCAibGlnaHRuaW5nY3NzIjogIjEuMzIuMCIsICJtYWdpYy1zdHJpbmciOiAiXjAuMzAuMjEiLCAic291cmNlLW1hcC1qcyI6ICJeMS4yLjEiLCAidGFpbHdpbmRjc3MiOiAiNC4zLjAiIH0gfSwgInNoYTUxMi1hRmI0Z1VoRk9nZGg5QVhvNEl6QkVPekJra0F4bTlWaWd3REpuTUlZdjNsY2ZYQ0pWZXNOZmJFYUJsNEJOZ1ZSeWlkOTJBbWR2aXF3QlVCUktTZVkzZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZSI6IFsiQHRhaWx3aW5kY3NzL294aWRlQDQuMy4wIiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQHRhaWx3aW5kY3NzL294aWRlLWFuZHJvaWQtYXJtNjQiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtZGFyd2luLXg2NCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtZnJlZWJzZC14NjQiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybS1nbnVlYWJpaGYiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybTY0LWdudSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtbXVzbCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LWdudSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LW11c2wiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLXdhc20zMi13YXNpIjogIjQuMy4wIiwgIkB0YWlsd2luZGNzcy9veGlkZS13aW4zMi1hcm02NC1tc3ZjIjogIjQuMy4wIiwgIkB0YWlsd2luZGNzcy9veGlkZS13aW4zMi14NjQtbXN2YyI6ICI0LjMuMCIgfSB9LCAic2hhNTEyLUY3SFpHQmVOOUkwL0F1dUpTNVB3Y0Q4eGF5eDVyaTVHaGpZVURCRVZZVWtleHlBL2dpd2JETmpSVnJ4U2V6RTNUMjUwT1UySy93cC9sdFd4M1VPZWZnPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWFuZHJvaWQtYXJtNjQiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1hbmRyb2lkLWFybTY0QDQuMy4wIiwgIiIsIHsgIm9zIjogImFuZHJvaWQiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVRKUGlxNjd0S2xMdU9iUDZSa3d2VkdEb3hDTUJWdERnS2tMZmEvdXlqNy9GeXh2UXdIUytVT25WclhYZ2JFc2ZVYU1naVZ2QzRLYkpuUnIyNmhvNE5nPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NCI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NEA0LjMuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLW9NTi9XWlJiK1NPMzdCbVVFbEVnZUVXdVU4RS9IWFJraU9EeEp4TGUxVVRIVlhMcmRWU2dmYUpWN3BTbGhSR01TT2lYTHV4VElqZnNGM3dZdno4Y2dRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi14NjQiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1kYXJ3aW4teDY0QDQuMy4wIiwgIiIsIHsgIm9zIjogImRhcndpbiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLU42Q1VtdTRhNmJLVkFEZnc3N3AraXc2WWQ5UTNPQmhlMHZlYURYK1FhemZ1VllsUXNIZkRneEJyc2pRL0lXK3p5d0w4bVRyTmQwU2RKVC96Z3R2TWRBPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWZyZWVic2QteDY0IjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtZnJlZWJzZC14NjRANC4zLjAiLCAiIiwgeyAib3MiOiAiZnJlZWJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLXpETDVoQmtRZEg1QzZNcHFiSzNnUUFnUDgwdHNNd1NJMjZ2ak96akp0TkNNVW8wbEZnT0l0ekhLQkl1cE9aTlF4dDNvdVBIN1JQaHZOaGlUZkNlNUNRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybS1nbnVlYWJpaGYiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC1hcm0tZ251ZWFiaWhmQDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItUjA2SGROaTdBN09Fb01zZjZkNHRqWjcxUkNXblpRUEhqMm1ub3RTRlVSak5MZEJDK2NJZ1hRN2w4MUNxZW9pUWZ0amY2T09ibHhYTUluTWdOMlZ6TUE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtZ251IjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtZ251QDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1xVEpIRUxYOGpldGpoUlFIQ0xpbGtWTG15YnB6TlFBdGFJL2dhb1ZvaWRuL3VmYk5EYkFvOEtsSzJKK3lQb2M4d1F4dkR4Q21oLzVscjhuQzErbFRiZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC1hcm02NC1tdXNsIjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtbXVzbEA0LjMuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItWjZzdWtpUXNuZ25XTytsMzlYNHBQYmlXVDgxSUMrUExLRitQSHhJbHlaYkdOYjlNT0RmWWxYRVZsRnZlajVCT1pJbldYMDFrVnl6ZUx2SHNYaGZjelE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LWdudSI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LXg2NC1nbnVANC4zLjAiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1EUk5kUVJwU0d6UkdmQVJWdVZreHZNOFExMm5oMTlsNEJGL0c3ekdBMW9lKzl3Y0M2c2FGQkhUSVNycEljS3poaVh0U3JsU3JsdUNmdk11bGVkb0NUUT09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC14NjQtbXVzbCI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LXg2NC1tdXNsQDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItWjBJQURiRG84Ymg2STdoMklRTXg2MDFBZFhCTGZGcEVkVW90ZnQ4NmV2ZC84WlBmbFplOUNPUE84UTF2dytwZkxXSVVvOXpOL0pHWnZ3dUFKcWR1cWc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kiOiBbIkB0YWlsd2luZGNzcy9veGlkZS13YXNtMzItd2FzaUA0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAZW1uYXBpL2NvcmUiOiAiXjEuMTAuMCIsICJAZW1uYXBpL3J1bnRpbWUiOiAiXjEuMTAuMCIsICJAZW1uYXBpL3dhc2ktdGhyZWFkcyI6ICJeMS4yLjEiLCAiQG5hcGktcnMvd2FzbS1ydW50aW1lIjogIl4xLjEuNCIsICJAdHlieXMvd2FzbS11dGlsIjogIl4wLjEwLjEiLCAidHNsaWIiOiAiXjIuOC4xIiB9LCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItSE5aR09VeEVtRWxrc1lSN1M2c0M1alRlTkdwb2JBc3k5dTdHdTBBc2tKOC8yMEZSOUdxZWJVeUIrSEJjVS9heDZCSHVpdUppK09kYTRCK1lYNkgxeUE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2luMzItYXJtNjQtbXN2YyI6IFsiQHRhaWx3aW5kY3NzL294aWRlLXdpbjMyLWFybTY0LW1zdmNANC4zLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVBlK1JQVlRpMVQrcXltdXVScGNkdndTVlpqbmxsL2Y3bjhnQnhNTWgzeExUY3RNREtxcGRmR2ltYk15aW9xdExoVVlaeGRKOXdHTmhWN01LSHZnWnNRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLXdpbjMyLXg2NC1tc3ZjIjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtd2luMzIteDY0LW1zdmNANC4zLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1NdnJmMmtYVy95ZVcvT1RlelpsQ0dPaXJYUmNVdUxJQngvNVkxMkJhUE03d0pvcnlHNmRmUy9OSkw4YUJQcXRURXgvVm00VDR2S3pGVWNLRFQrVEtVQT09Il0sCgogICAgIkB0YWlsd2luZGNzcy9wb3N0Y3NzIjogWyJAdGFpbHdpbmRjc3MvcG9zdGNzc0A0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYWxsb2MvcXVpY2stbHJ1IjogIl41LjIuMCIsICJAdGFpbHdpbmRjc3Mvbm9kZSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUiOiAiNC4zLjAiLCAicG9zdGNzcyI6ICJeOC41LjEwIiwgInRhaWx3aW5kY3NzIjogIjQuMy4wIiB9IH0sICJzaGE1MTItSm0wNVRqeCs5eUNMR3Y1cXcxYys4NFBzZHM4TW55ckVRWUNCK0ZGazJsZ0dpVWpsUnFkeGtlNG1WVHVZcmoyeG5WWnFLaW0yQXByNXlTdVFSWUF3L3c9PSJdLAoKICAgICJAdHlieXMvd2FzbS11dGlsIjogWyJAdHlieXMvd2FzbS11dGlsQDAuMTAuMiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi40LjAiIH0gfSwgInNoYTUxMi1Sb0J2SjJYMHd1S2xXRklqcndmZkd3MUlxWkhLUXF6SWNoS2FhZFpaZm5OcHNBWXAybU0waDM2SnRQQ2pOREFIR2dZZXovMTV1TUJwZkd3Y2hoaU1nZz09Il0sCgogICAgIkB0eXBlcy9jaGFpIjogWyJAdHlwZXMvY2hhaUA1LjIuMyIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAdHlwZXMvZGVlcC1lcWwiOiAiKiIsICJhc3NlcnRpb24tZXJyb3IiOiAiXjIuMC4xIiB9IH0sICJzaGE1MTItTXc1NThvZUE5ZkZidjY1L3k0bUh0WERzOWJQbkZNWkFML2p4ZFBGVXBPSEhJWFg5MW1jZ0VIYlM1TGFocitwd1pGUjhBN0dRbGVSV2VJNmNHRkMyVUE9PSJdLAoKICAgICJAdHlwZXMvZGVlcC1lcWwiOiBbIkB0eXBlcy9kZWVwLWVxbEA0LjAuMiIsICIiLCB7fSwgInNoYTUxMi1jOWg5ZFZWTWlnTVBjNGJ3VHZDNWR4cXRxSlp3UVBlUHNXalBscFNPbm9qYm9yNnBHcWRrNTQxbGZBN0FxRlFyNXBCMUJSZHEwanVZOWRiODFCd3lGdz09Il0sCgogICAgIkB0eXBlcy9lc3RyZWUiOiBbIkB0eXBlcy9lc3RyZWVAMS4wLjkiLCAiIiwge30sICJzaGE1MTItR2hkUGd5MWVsNC9JbVAwNVgwNVV3NGN3Mi9NOTNCQ1VtbkV2V1pOU3RsQ3pFS01FNEZraytZcG9BNU9pSE5RbW9TN0NhZmI4WGEzUHlhOG0xUXJ6ZWc9PSJdLAoKICAgICJAdHlwZXMvbm9kZSI6IFsiQHR5cGVzL25vZGVAMjIuMTkuMTkiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidW5kaWNpLXR5cGVzIjogIn42LjIxLjAiIH0gfSwgInNoYTUxMi1keWgveE8yRmg1YllyZldhYXFHclJRUUdrTmRtWXc2QW1hQVV2WWVVTU5UV1F0dmI3OTZpa0xkbVRjaFJtT2xPaUlKMVREWGZXZ1Z4MVFrVWxRNkhldz09Il0sCgogICAgIkB0eXBlcy9yZWFjdCI6IFsiQHR5cGVzL3JlYWN0QDE5LjIuMTUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiY3NzdHlwZSI6ICJeMy4yLjIiIH0gfSwgInNoYTUxMi1lUndjR05IdmUrRThxdEVRU1NSbDZ1cmgrckZvcDR2OGdtNk84ckd2MjVDb2RidkZkTGpBMXZWUTFLa2lGRTB3MFVQT25iOHREaUZLTDVscDBydFk1UT09Il0sCgogICAgIkB0eXBlcy9yZWFjdC1kb20iOiBbIkB0eXBlcy9yZWFjdC1kb21AMTkuMi4zIiwgIiIsIHsgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJAdHlwZXMvcmVhY3QiOiAiXjE5LjIuMCIgfSB9LCAic2hhNTEyLWpwMkwvZVk2Zm4rS2dWVlFBT3FZSXRiRjBWWS9ZQXBlNU16MkYwYXlrU084Z3gzMWJZQ1p5dlNlWXhDSEt2ekhHNWVaamMrenlhUzVCckJXeWEyK2tRPT0iXSwKCiAgICAiQHZpdGVzdC9leHBlY3QiOiBbIkB2aXRlc3QvZXhwZWN0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBzdGFuZGFyZC1zY2hlbWEvc3BlYyI6ICJeMS4xLjAiLCAiQHR5cGVzL2NoYWkiOiAiXjUuMi4yIiwgIkB2aXRlc3Qvc3B5IjogIjQuMS42IiwgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAiY2hhaSI6ICJeNi4yLjIiLCAidGlueXJhaW5ib3ciOiAiXjMuMS4wIiB9IH0sICJzaGE1MTItN0VIRHF1UHRoQUxTVjBqaGhqZ0VXOEZYYXZpTXg3clNxdThXNm9xQ29BdU9oS292ODE0UDk5UURWMXB4TUEzUVB2MjFZdWR2Sm5nSWhqck5JNG9wTGc9PSJdLAoKICAgICJAdml0ZXN0L21vY2tlciI6IFsiQHZpdGVzdC9tb2NrZXJANC4xLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHZpdGVzdC9zcHkiOiAiNC4xLjYiLCAiZXN0cmVlLXdhbGtlciI6ICJeMy4wLjMiLCAibWFnaWMtc3RyaW5nIjogIl4wLjMwLjIxIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIm1zdyI6ICJeMi40LjkiLCAidml0ZSI6ICJeNi4wLjAgfHwgXjcuMC4wIHx8IF44LjAuMCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIm1zdyIsICJ2aXRlIl0gfSwgInNoYTUxMi1NQ0ZjNjNjek1qRUluT2xjWTJjcFFDdkNOK0tnYkFuKzYweHU5Y01nUDRzS2FMQzVKTkFLdzdKSDhRZEFub0FDODhoVzFJaVNOWitHZ1ZYbE4xVWNNUT09Il0sCgogICAgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6IFsiQHZpdGVzdC9wcmV0dHktZm9ybWF0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRpbnlyYWluYm93IjogIl4zLjEuMCIgfSB9LCAic2hhNTEyLWg1U3hEL0l6TmhaWW5yU1pSc1VaUUlDK3ZEMEdZOGNVdnEwaXdzbWtGS2l4UkNLTExXcUNYYS9GSVE0UzFSK3NJK1BHb29qa0hzZE5yYlppTTlRcGd3PT0iXSwKCiAgICAiQHZpdGVzdC9ydW5uZXIiOiBbIkB2aXRlc3QvcnVubmVyQDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAicGF0aGUiOiAiXjIuMC4zIiB9IH0sICJzaGE1MTItbk9QQ21uMit5RDBaTm1LZHNYR3YvVXhNTVdiTXVLZUQ2R3lZbmNOd2RrWUR4cFF2clBTS1lqMnJXdURqQzJZNGI2dzZoamlwNWRCS0Z6RVV1WmUzdkE9PSJdLAoKICAgICJAdml0ZXN0L3NuYXBzaG90IjogWyJAdml0ZXN0L3NuYXBzaG90QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6ICI0LjEuNiIsICJAdml0ZXN0L3V0aWxzIjogIjQuMS42IiwgIm1hZ2ljLXN0cmluZyI6ICJeMC4zMC4yMSIsICJwYXRoZSI6ICJeMi4wLjMiIH0gfSwgInNoYTUxMi1ZaHNkRTZ4QVZmVERtemp4TDJaRFV2amorWnNneU9LZStUZFF6cWtENzJ3SU9tSGthOE51R1E2TnBUTlp2OUQyWjYzZmJ3V0tKUGVWcEV3NEVRZ1l4dz09Il0sCgogICAgIkB2aXRlc3Qvc3B5IjogWyJAdml0ZXN0L3NweUA0LjEuNiIsICIiLCB7fSwgInNoYTUxMi1KRkt4TXg2dWRod0toL0xkbzI3MGUxN1FYNzEwdmd1bk1rdVBBdlhqSFN2QzZvcUxXQUhoVmhqZy9JNzFxMHUwQ0JTRXJJT0RWMUtqdjBGUU5TV2pkZz09Il0sCgogICAgIkB2aXRlc3QvdXRpbHMiOiBbIkB2aXRlc3QvdXRpbHNANC4xLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHZpdGVzdC9wcmV0dHktZm9ybWF0IjogIjQuMS42IiwgImNvbnZlcnQtc291cmNlLW1hcCI6ICJeMi4wLjAiLCAidGlueXJhaW5ib3ciOiAiXjMuMS4wIiB9IH0sICJzaGE1MTItRnhJWStVODFSM0xHS0N4YUhIRlJRNStnNi9pUmdHTG1lSFdkcDJBbWo0bGpRUnJFSVdIbVp5RGZEWUJSWmxweXFBN3FLeHRTOUREMWRoazhSblJJVlE9PSJdLAoKICAgICJhY29ybiI6IFsiYWNvcm5AOC4xNi4wIiwgIiIsIHsgImJpbiI6IHsgImFjb3JuIjogImJpbi9hY29ybiIgfSB9LCAic2hhNTEyLVVWSnlFOU10dE9zQlFJREt3MXNrYjluQXdRdVI1d3VHRDMrODJLNkpnSmxtL1krS0k5Mm9Oc01OR1pDWWREc1Z0UkhTYWswcGNWNURubzUrNGpoOXN3PT0iXSwKCiAgICAiYW5zaS1yZWdleCI6IFsiYW5zaS1yZWdleEA1LjAuMSIsICIiLCB7fSwgInNoYTUxMi1xdUpRWGxUU1VHTDJMSDlTVVhvOFZ3c1k0c29hbmhnbzZMTlNtODRFMUxCY0U4czNPMHdwZGlSenlSOXovWlpKTWxNV3YzN3FPT2I5cGRKbE1VRUtGUT09Il0sCgogICAgImFuc2ktc3R5bGVzIjogWyJhbnNpLXN0eWxlc0A0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjb2xvci1jb252ZXJ0IjogIl4yLjAuMSIgfSB9LCAic2hhNTEyLXpiQjlyQ0pBVDFyYmppVkRiMmhxS0ZITllMeGd0azhOVVJ4WjNJWndEM0Y2TnR4YlhaUUNublNpMUxreCtJRG9oZFBsRnAyMjJ3VkFMSWhlWkpRU0VnPT0iXSwKCiAgICAiYXNzZXJ0aW9uLWVycm9yIjogWyJhc3NlcnRpb24tZXJyb3JAMi4wLjEiLCAiIiwge30sICJzaGE1MTItSXppOFJRY2ZmcUNlTlZnRmlnS2xpMXNza2xJYnBIbkNZYzZBa25YR1lvQjZnckpxeWVieTdqdjEySlVRZ21UQW5JRG5iY2sxdXhrc1Q0ZHpOM1BXQkE9PSJdLAoKICAgICJiYXNlbGluZS1icm93c2VyLW1hcHBpbmciOiBbImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZ0AyLjEwLjMxIiwgIiIsIHsgImJpbiI6IHsgImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZyI6ICJkaXN0L2NsaS5janMiIH0gfSwgInNoYTUxMi1NdWpZTzNlUDcydXZtU0UwaTR3bHRzb2RSZklwWkFUUDNqdnpSTlJHR3hneklkN2FWb2NWSkpWM25mMDFxbnp6S0ZHeFFWQzlicFd4bDVjanhUci83UT09Il0sCgogICAgImJ1ZmZlci1mcm9tIjogWyJidWZmZXItZnJvbUAxLjEuMiIsICIiLCB7fSwgInNoYTUxMi1FK1hRQ1J3U2JhYWlDaHR2Nms2RHdnYytieCtCczZ2dUtKSEhsNWtveC9CYUtiaGlYenFRT3dLNGNPMjJ5RWxHcDJPQ21qd1ZoVDNIbXhneVBHbkpmUT09Il0sCgogICAgImNhbml1c2UtbGl0ZSI6IFsiY2FuaXVzZS1saXRlQDEuMC4zMDAwMTc5MyIsICIiLCB7fSwgInNoYTUxMi1pd1NzWVdhQ09vaDI2Y1Y4TndOUlZpSGxyZlV2WXNIRGZSVmNidG13MEtnNlBKSVpaWHdNa2oxNDQyRllMQkdrZVVmMWp1QXNVM0RUZnhXNTc5bXJQQT09Il0sCgogICAgImNoYWkiOiBbImNoYWlANi4yLjIiLCAiIiwge30sICJzaGE1MTItTlVQUmx1T2ZPaVRLQkt2V1B0U0Q0UGhGdldDcU9pMEJHU3ROV3M1N1g5anM3WEdUcHJTbUZvejVGMHRXaFI0V1BqTmVSOWpYcWRDNy9VcFNKVG5sUmc9PSJdLAoKICAgICJjaGFsayI6IFsiY2hhbGtANC4xLjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiYW5zaS1zdHlsZXMiOiAiXjQuMS4wIiwgInN1cHBvcnRzLWNvbG9yIjogIl43LjEuMCIgfSB9LCAic2hhNTEyLW9LbmJoRnlSSVhwVXVlejhpQk1teUVhNG5iajRJT1F5dWhjL3d5OWtZNy9XVlBjd0lPOVZBNjY4UHU4UmtPNyswRzc2U0xST2V5dzlDcFEwNjFpNG1BPT0iXSwKCiAgICAiY2xpZW50LW9ubHkiOiBbImNsaWVudC1vbmx5QDAuMC4xIiwgIiIsIHt9LCAic2hhNTEyLUlWM091MGpTTXpacmQzcFo0OG5Ma1Q5REE3QWcxcG5QemFpUWhwVzdjM1JiY3FxenZ6elZ1K0w4Z2ZxTXAvOElNMk1RdFNpcWFDeHJyY2Z1OEk4ck1BPT0iXSwKCiAgICAiY2xpdWkiOiBbImNsaXVpQDguMC4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInN0cmluZy13aWR0aCI6ICJeNC4yLjAiLCAic3RyaXAtYW5zaSI6ICJeNi4wLjEiLCAid3JhcC1hbnNpIjogIl43LjAuMCIgfSB9LCAic2hhNTEyLUJTZU5ueXVzNzVDNC8vTlE5Z1F0MS9jc1RYeW8vOFNiK2FmTEFrekFwdEZ1TXNvZDlIRm9rR051ZFpwaS9vUVY3M2huVksrc1IrNVBWUk1kK0RyN1lRPT0iXSwKCiAgICAiY2xzeCI6IFsiY2xzeEAyLjEuMSIsICIiLCB7fSwgInNoYTUxMi1lWW0wUVdCdFVyQldaV0cwZDM4Nk9HQXcxNlo5OTVQaU9WbzJCN2JqV1NiSGVkR2w1ZTBaV2FxNjVrT0dnVVNOZXNFSURrQjlJU2JUZy9KSzlkaENaQT09Il0sCgogICAgImNvbG9yLWNvbnZlcnQiOiBbImNvbG9yLWNvbnZlcnRAMi4wLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiY29sb3ItbmFtZSI6ICJ+MS4xLjQiIH0gfSwgInNoYTUxMi1SUkVDUHNqN2l1L3hiNW9LWWNzRkhTcHBGTm5zai81Mk9WVFJLYjR6UDVvblh3VkYzelZtbVRvTmNPZkdDK0NSRHBmSy9VNTg0Zk1nMzhaSENhRWxLUT09Il0sCgogICAgImNvbG9yLW5hbWUiOiBbImNvbG9yLW5hbWVAMS4xLjQiLCAiIiwge30sICJzaGE1MTItZE95KzNBdVczYTJ3TmJaSEl1TVpwVGNnakd1TFUvdUJML3ViY1pGOU9YYkRvOGZmNE84eVZwNUJmMGVmUzh1RW9ZbzVxNEZ4N2RZOU9nUUdYZ0FzUUE9PSJdLAoKICAgICJjb21tYW5kZXIiOiBbImNvbW1hbmRlckAyLjIwLjMiLCAiIiwge30sICJzaGE1MTItR3BWa21NOHZGMnZRVWtqMkx2Wm1EMzVKeGVKT0xDd0o5Y1VrdWd5azJudWhidjMrbUp2cExZWXQrMCtVU014RStvaitleS9sSkVuaFp3NzV4L09NY1E9PSJdLAoKICAgICJjb25jdXJyZW50bHkiOiBbImNvbmN1cnJlbnRseUA5LjIuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjaGFsayI6ICI0LjEuMiIsICJyeGpzIjogIjcuOC4yIiwgInNoZWxsLXF1b3RlIjogIjEuOC4zIiwgInN1cHBvcnRzLWNvbG9yIjogIjguMS4xIiwgInRyZWUta2lsbCI6ICIxLjIuMiIsICJ5YXJncyI6ICIxNy43LjIiIH0sICJiaW4iOiB7ICJjb25jIjogImRpc3QvYmluL2NvbmN1cnJlbnRseS5qcyIsICJjb25jdXJyZW50bHkiOiAiZGlzdC9iaW4vY29uY3VycmVudGx5LmpzIiB9IH0sICJzaGE1MTItZnNmck8wTXhWNjRabm95OC9sMXZWSWpqSGEyOVNaeXlxUGdRQndoaURjYVc4d0pjMlczWFdWT0d4NE0zb0pCbnYvemRVWklJcDFnRGVTOThHelA4Tmc9PSJdLAoKICAgICJjb252ZXJ0LXNvdXJjZS1tYXAiOiBbImNvbnZlcnQtc291cmNlLW1hcEAyLjAuMCIsICIiLCB7fSwgInNoYTUxMi1LdnA0NTlIclYyRkVKMUNBc2kxS3UrTVkza2FzSDE5VEZ5a1R6MnhXbU1lcTZiazJOVTNYWHZmSitRNjFtMHhrdFd3dCsxSFNZZjNKWnNUbXMzYVJKZz09Il0sCgogICAgImNzc3R5cGUiOiBbImNzc3R5cGVAMy4yLjMiLCAiIiwge30sICJzaGE1MTItejFIR0tjWXkyeEE4QUdRZndybjBQQXkrUEI3WC9HU2ozVVZKVzlxS3luNDN4V2ErZ2w1blhtVTRxcUxNUnpXVkxGQzhLdXNVWDhULzBrQ2lPWXBBSVE9PSJdLAoKICAgICJkYXRlLWZucyI6IFsiZGF0ZS1mbnNANC4yLjEiLCAiIiwge30sICJzaGE1MTItMzdSaFNkeGFHMXN1ZW42VkRDemE2ck5yUWZvb3lRaDU3SEZWUHdRR0VxMlFXbGlWTHpQUVo4T2EwMTd3ZU91K0haQ256STdOM1BmL3d5b0JLZkVxckE9PSJdLAoKICAgICJkYXRlLWZucy1qYWxhbGkiOiBbImRhdGUtZm5zLWphbGFsaUA0LjEuMC0wIiwgIiIsIHt9LCAic2hhNTEyLWhUSVAveit0K3FLd0JEY21tc25taldUZHV4Q2crNUtmZHFXUXZiMlgvOEM5K2tuWVk2ZXBOL3BmeGREdXlWbFNWZUZ6MHNNNWVFZndJVVE3MFU0Y2tnPT0iXSwKCiAgICAiZGV0ZWN0LWxpYmMiOiBbImRldGVjdC1saWJjQDIuMS4yIiwgIiIsIHt9LCAic2hhNTEyLUJ0ajJCT09PODNvM1d5SDU5ZThNZ1hzeEVRVmNhcmtVT3BFWXJ1YkIwdXJ3bk4xMHlRMzY0cnNpQnlVMTFuWmxxV1labTA1aS9vZjdpbzRtemloQnRRPT0iXSwKCiAgICAiZW1vamktcmVnZXgiOiBbImVtb2ppLXJlZ2V4QDguMC4wIiwgIiIsIHt9LCAic2hhNTEyLU1Tall6Y1dOT0EwZXdBSHB6ME14cFlGdndnNnlqeTFORzN4dGVvcXo2NDRWQ28vUlBnbnIxL0dHdCtpYzNpSlR6UThFdTNUZE0xNFNhd25WVW1HRTZBPT0iXSwKCiAgICAiZW5oYW5jZWQtcmVzb2x2ZSI6IFsiZW5oYW5jZWQtcmVzb2x2ZUA1LjIxLjUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZ3JhY2VmdWwtZnMiOiAiXjQuMi40IiwgInRhcGFibGUiOiAiXjIuMy4zIiB9IH0sICJzaGE1MTItbUxDTmJyUWxpMTFLMXlTVW11TnQ0WlVCM09wR0lEcTRxMnZUQlRmNWNMMmxwc1JqSTlRS3FTRDBuZGpXOEZ5dmNXL0pqNDZnTWU5c3l5SEFzdk1hL0E9PSJdLAoKICAgICJlcy1tb2R1bGUtbGV4ZXIiOiBbImVzLW1vZHVsZS1sZXhlckAyLjEuMCIsICIiLCB7fSwgInNoYTUxMi1uMjd6VFlNall1MWFqNE1qQ1d6U1A3RzlyNzV1dHNhb2M4bTYxd2VLK1c4Sk1CR0dReWJkNDNHc3RDWFozV05tU0Z0R1Q5d2k1OXFRVFc2bWhUUjVMUT09Il0sCgogICAgImVzYnVpbGQiOiBbImVzYnVpbGRAMC4yNS40IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGVzYnVpbGQvYWl4LXBwYzY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9hbmRyb2lkLWFybSI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvYW5kcm9pZC1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvYW5kcm9pZC14NjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2Rhcndpbi1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZGFyd2luLXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZnJlZWJzZC1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZnJlZWJzZC14NjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWFybSI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtYXJtNjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWlhMzIiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWxvb25nNjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LW1pcHM2NGVsIjogIjAuMjUuNCIsICJAZXNidWlsZC9saW51eC1wcGM2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtcmlzY3Y2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtczM5MHgiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbmV0YnNkLWFybTY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9uZXRic2QteDY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9vcGVuYnNkLWFybTY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9vcGVuYnNkLXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvc3Vub3MteDY0IjogIjAuMjUuNCIsICJAZXNidWlsZC93aW4zMi1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvd2luMzItaWEzMiI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvd2luMzIteDY0IjogIjAuMjUuNCIgfSwgImJpbiI6IHsgImVzYnVpbGQiOiAiYmluL2VzYnVpbGQiIH0gfSwgInNoYTUxMi04cGdqTFVjVWpjZ0RnKzJRNE5ZWG5QYm8vdm5jQVk0VW15YUNtMGpaZXZFUnFDSFpJYVd3ZEpIa2Y4WFF0dTRBeFNLQ2R2clViVDBYVXIxSWRaekk4UT09Il0sCgogICAgImVzY2FsYWRlIjogWyJlc2NhbGFkZUAzLjIuMCIsICIiLCB7fSwgInNoYTUxMi1XVWoycWx4YVF0TzRnNlBxNWMyOUdUY1dHRHlkOGl0TDh6VGxpcGdFQ3ozSmVzQWlpT0tvdGQ4SlU2b3RCM1BBQ2dHNnhrSlV5Vmhib01TK2JqZS9qQT09Il0sCgogICAgImVzdHJlZS13YWxrZXIiOiBbImVzdHJlZS13YWxrZXJAMy4wLjMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL2VzdHJlZSI6ICJeMS4wLjAiIH0gfSwgInNoYTUxMi03UlVLZlhnU01Na3p0Nlp1WG1xYXBPdXJMR1BQZmdqNmw5dVJaN2xSR29sdmsweTJ5b2NjMzVMZGN4S0M1UFFaZG4yRE1xaW9BUTJOb1djclRLbW02Zz09Il0sCgogICAgImV4cGVjdC10eXBlIjogWyJleHBlY3QtdHlwZUAxLjMuMCIsICIiLCB7fSwgInNoYTUxMi1rbnZ5ZWF1WWhxak9ZdlE2Nk16blNNczgzd21IckN5Y05FTjZBbysyQWVZRWZ4VUlrdWlWeGRFYTFxbEdFUEsrV2UzbjBUSGlEY2lZU3NDY2dXL0RvQT09Il0sCgogICAgImZkaXIiOiBbImZkaXJANi41LjAiLCAiIiwgeyAicGVlckRlcGVuZGVuY2llcyI6IHsgInBpY29tYXRjaCI6ICJeMyB8fCBeNCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbInBpY29tYXRjaCJdIH0sICJzaGE1MTItdEliWXRaYnVjT3MwQlJHcVBKa3NoSlVZZEwrU0RIN2RWTThnankrRVJwM1dBVWpMRUZKRSswMmthbnlIdHdqV09ud3JLWUJpd0FtTTBwNGtMSkFuWGc9PSJdLAoKICAgICJmc2V2ZW50cyI6IFsiZnNldmVudHNAMi4zLjMiLCAiIiwgeyAib3MiOiAiZGFyd2luIiB9LCAic2hhNTEyLTV4b0RmWCtmTDdmYUFUbmFnbVdQcGJGdHdoL1I3N1dtTU1xcUhHUzY1QzN2dkIwWUhyZ0YrQjFZbVozNDQxdE1qNW42M2swMjEyWE5vSnd6bGhmZlF3PT0iXSwKCiAgICAiZ2V0LWNhbGxlci1maWxlIjogWyJnZXQtY2FsbGVyLWZpbGVAMi4wLjUiLCAiIiwge30sICJzaGE1MTItRHlGUDNCTS8zWUhUUU9DVUwvdzBPWkhSMGxwS2VHcnhvdGNIV2NxTkVkbmx0cUZ3WFZmaEVCUTk0ZUlvMzRBZlFwbzByR2tpNGN5SWlmdFkwNmgyRmc9PSJdLAoKICAgICJncmFjZWZ1bC1mcyI6IFsiZ3JhY2VmdWwtZnNANC4yLjExIiwgIiIsIHt9LCAic2hhNTEyLVJiSjUvam1GY05OQ2NEVjVvOWVUbkJMSi9Ic3pXVjBQNzNiYytGZjRuUy9ySmorWWFTNklHeWlPTDBWb0JZWCtsMVdybDNrNjNoL0tySCtuaEowWHZRPT0iXSwKCiAgICAiaGFzLWZsYWciOiBbImhhcy1mbGFnQDQuMC4wIiwgIiIsIHt9LCAic2hhNTEyLUV5a0pUL1ExS2pUV2N0cHBnSUFnZlNPMHRLVnVaVWpoZ01yMTdrcVR1bU1sNkFmdjNFSVNsZVU3cVpVem9YREZUQUhUREM0Tk9vRy9aeFUzRXZsTVBRPT0iXSwKCiAgICAiaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQiOiBbImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50QDMuMC4wIiwgIiIsIHt9LCAic2hhNTEyLXp5bW01K3Urc0NzU1d5RDlxTmFlalYzREZ2aENLY2xLZGl6WWFKVXVIQTgzUkxqYjduU3VHbmRkQ0hHdjBoaytLWTdCTUFsc1dlSzRVZWc2RVY2WFFnPT0iXSwKCiAgICAiaml0aSI6IFsiaml0aUAyLjcuMCIsICIiLCB7ICJiaW4iOiB7ICJqaXRpIjogImxpYi9qaXRpLWNsaS5tanMiIH0gfSwgInNoYTUxMi1BQy83Sm9mSnZaR3JybmVXTmFFbkplT0xVeCtKbEd0N3ROYTB3WmlSUFQ0TVkxd21mS2p0Mis2TzJwMnV6Mitza2xsOE9aWm1KTU5xZWtlN2tLYk5nUT09Il0sCgogICAgImxpYnBob25lbnVtYmVyLWpzIjogWyJsaWJwaG9uZW51bWJlci1qc0AxLjEyLjQxIiwgIiIsIHt9LCAic2hhNTEyLWxzbU1tR1hCeFhJSy9WTUxFajBrTDZNdFVzMWtCR2oxblRDemk2emdRb0cxREV3cXd0MkRReUh4Y0x5a2NlSXhBbmZFM2h5YTdOdUloNlBwQzZTM2ZBPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzIjogWyJsaWdodG5pbmdjc3NAMS4zMi4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImRldGVjdC1saWJjIjogIl4yLjAuMyIgfSwgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAibGlnaHRuaW5nY3NzLWFuZHJvaWQtYXJtNjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1kYXJ3aW4tYXJtNjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1kYXJ3aW4teDY0IjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtZnJlZWJzZC14NjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1saW51eC1hcm0tZ251ZWFiaWhmIjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251IjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtbXVzbCI6ICIxLjMyLjAiLCAibGlnaHRuaW5nY3NzLWxpbnV4LXg2NC1nbnUiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtbXVzbCI6ICIxLjMyLjAiLCAibGlnaHRuaW5nY3NzLXdpbjMyLWFybTY0LW1zdmMiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy13aW4zMi14NjQtbXN2YyI6ICIxLjMyLjAiIH0gfSwgInNoYTUxMi1OWFlCemluTnJibGZyYVBHeXJiUG9EMTlDMWg5bGZJLzFtemdXWXZYVVRlNDE0R3ovWDFGRDJYQlpTWk03clJUck1BOEpMM090QWFHaWZySUtoUTV5UT09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1hbmRyb2lkLWFybTY0IjogWyJsaWdodG5pbmdjc3MtYW5kcm9pZC1hcm02NEAxLjMyLjAiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItWUs3L0NsVHQ0a0FLMHZvNnczWCtQbm0wRDJjZjJ2UEhiaE9YZG9OdGkxR2EwYWwxUDRUQlpod2pBVHZqTndMRUJDbkt2akpjMmpRZ0hYSDBORXdsQWc9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtZGFyd2luLWFybTY0IjogWyJsaWdodG5pbmdjc3MtZGFyd2luLWFybTY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVJ6ZUc5SnU1YmFnMkJ2MS9sd2xWSnZCRTNxNlR0WHNrZFpMTEN5Zmc1cHQrSEx6OUJxbElDTzdMWk03VkhOVFRuLzVQUmhIRkJTams1bGM0Y21zY1BRPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzLWRhcndpbi14NjQiOiBbImxpZ2h0bmluZ2Nzcy1kYXJ3aW4teDY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1VK1FzQnAybS9zMndxcFVZVC82d25sYWdkWmJ0WmRuZFNtdXQvTkpxbENjTUxUV3A1bXVDcklEK0s1VUo2anFEMkJGc2hlakNZWG5pUERiTmg3M1Y4dz09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1mcmVlYnNkLXg2NCI6IFsibGlnaHRuaW5nY3NzLWZyZWVic2QteDY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSkNUaWdlZEVrc1prM3RIVFR0aG5NZFZmR2Y2MUZreThKaTJFNFlqVVRFUVgxNHhpeS9sVHpYbnUxdndpWmUzYlllMHErU3BzU0gvQ1RlRFhLNldIaWc9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtLWdudWVhYmloZiI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LWFybS1nbnVlYWJpaGZAMS4zMi4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTIteDZybm5wUmEyR0wwelFPa3Q2cnRzM1lEUHpkdUxwV3Z3QUY2RU1oWEZWWlhENHRQckJrRUZxekdvd3pDc0lXc1BqcVNLK3R5TkVPRFVCWGVlVkhTa3c9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251IjogWyJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItMG5uTXlveU9MUkpYZmJNT2lsYVNSY0xIM0p3NXo5SEROR2ZUL2d3Q1BnYURqbngwaTh3N3ZCekZMRlIxZjZDTUxLRjhnVmJlYm1rVU4zZmEva1FKcFE9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtbXVzbCI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LWFybTY0LW11c2xAMS4zMi4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1VcFFrb2VucjRVSkV6Z1ZJWXBJODBsREZ2Um1QVmc2b3Fib05IZm9INENRSWZOQStIT3JaN01vN0taUDAyZEM2TGpnaFBRSmVCc3ZYaEpvZC93bklCZz09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtZ251IjogWyJsaWdodG5pbmdjc3MtbGludXgteDY0LWdudUAxLjMyLjAiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1WN1FyNTJJaFptZEtQVnIrVnR3OG8rV0xzUUpZQ1RkOGxvSWZwRGFNUldHVVpmQk9ZRUpleUpJa3FHSURNWlB3UHgyNHBVTWZ3U3h4SThwaHIvTWJPQT09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtbXVzbCI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LXg2NC1tdXNsQDEuMzIuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLWJZY0xwK1ZiMGF3c2lYZy84MHVDUmV6Q1lITmcxL2wzbXQwZ3pIbldWOVhQMVc1c0thNS9UQ2RHV2FSL3pCTTJQZUYvSGJzUXYvajJVUk5PaVZ1eFdnPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzLXdpbjMyLWFybTY0LW1zdmMiOiBbImxpZ2h0bmluZ2Nzcy13aW4zMi1hcm02NC1tc3ZjQDEuMzIuMCIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItOFNiQzhCUjQwcFM2YmFDTThzYnRZRFN3RVZRZDRKbEZUT2xhRDNnV0dIZlRoVGNBQm5OREJkYTZlVFplcWJvZmFsSUpoRngwcUt6Z0hKbWNQVG5HZHc9PSJdLAoKICAgICJsaWdodG5pbmdjc3Mtd2luMzIteDY0LW1zdmMiOiBbImxpZ2h0bmluZ2Nzcy13aW4zMi14NjQtbXN2Y0AxLjMyLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1BbXE5Qi9Tb1pZZERpMWtGcm9qbm9xUEx4WWhRNFdvNVhpTDhFVkpyVnNCOEFSb0MxUFdXNlZHdFQwV0tDZW1qeThhQytsb3VKbmpTN1UxOHgzYjA2UT09Il0sCgogICAgIm1hZ2ljLXN0cmluZyI6IFsibWFnaWMtc3RyaW5nQDAuMzAuMjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjIjogIl4xLjUuNSIgfSB9LCAic2hhNTEyLXZkMkY0WVV5RVhLR2NMSG9xK1RFeUNqeHVlU2VIbkZ4eXlqTnA4MHlnMFhWNHZVaG5EZXIvbHZ2bHFNL2FyQjViWFFONUsyLzNvaW55Q1J5eDhUMkNRPT0iXSwKCiAgICAibmFub2lkIjogWyJuYW5vaWRAMy4zLjEyIiwgIiIsIHsgImJpbiI6IHsgIm5hbm9pZCI6ICJiaW4vbmFub2lkLmNqcyIgfSB9LCAic2hhNTEyLVpCOVJILzM5cXBxNVZ1NlkrTm1VYUZoUVI2cHArTTJYdDc2WEJuRXdEYUdjVkFxaGx2eHJsM0IyYktTNUQzTkgzUVI3NnYzYVNyS2FGL0tpeTdsRXRRPT0iXSwKCiAgICAibmV4dCI6IFsibmV4dEAxNi4yLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQG5leHQvZW52IjogIjE2LjIuNiIsICJAc3djL2hlbHBlcnMiOiAiMC41LjE1IiwgImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZyI6ICJeMi45LjE5IiwgImNhbml1c2UtbGl0ZSI6ICJeMS4wLjMwMDAxNTc5IiwgInBvc3Rjc3MiOiAiOC40LjMxIiwgInN0eWxlZC1qc3giOiAiNS4xLjYiIH0sICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBuZXh0L3N3Yy1kYXJ3aW4tYXJtNjQiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy1kYXJ3aW4teDY0IjogIjE2LjIuNiIsICJAbmV4dC9zd2MtbGludXgtYXJtNjQtZ251IjogIjE2LjIuNiIsICJAbmV4dC9zd2MtbGludXgtYXJtNjQtbXVzbCI6ICIxNi4yLjYiLCAiQG5leHQvc3djLWxpbnV4LXg2NC1nbnUiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy1saW51eC14NjQtbXVzbCI6ICIxNi4yLjYiLCAiQG5leHQvc3djLXdpbjMyLWFybTY0LW1zdmMiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy13aW4zMi14NjQtbXN2YyI6ICIxNi4yLjYiLCAic2hhcnAiOiAiXjAuMzQuNSIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJAb3BlbnRlbGVtZXRyeS9hcGkiOiAiXjEuMS4wIiwgIkBwbGF5d3JpZ2h0L3Rlc3QiOiAiXjEuNTEuMSIsICJiYWJlbC1wbHVnaW4tcmVhY3QtY29tcGlsZXIiOiAiKiIsICJyZWFjdCI6ICJeMTguMi4wIHx8IDE5LjAuMC1yYy1kZTY4ZDJmNC0yMDI0MTIwNCB8fCBeMTkuMC4wIiwgInJlYWN0LWRvbSI6ICJeMTguMi4wIHx8IDE5LjAuMC1yYy1kZTY4ZDJmNC0yMDI0MTIwNCB8fCBeMTkuMC4wIiwgInNhc3MiOiAiXjEuMy4wIiB9LCAib3B0aW9uYWxQZWVycyI6IFsiQG9wZW50ZWxlbWV0cnkvYXBpIiwgIkBwbGF5d3JpZ2h0L3Rlc3QiLCAiYmFiZWwtcGx1Z2luLXJlYWN0LWNvbXBpbGVyIiwgInNhc3MiXSwgImJpbiI6IHsgIm5leHQiOiAiZGlzdC9iaW4vbmV4dCIgfSB9LCAic2hhNTEyLXFPVmdLSmcxK0F0MTVOcGVVUCtlSmdDSHZUQ2dYc29nd2VxODdSaS9JeDdQa3FRSGc0c2RhWG1TRnFLbGdhSVhFNGtXMGcyNUxFNjhXODdVQU5sSHR3PT0iXSwKCiAgICAib2J1ZyI6IFsib2J1Z0AyLjEuMSIsICIiLCB7fSwgInNoYTUxMi11VHFGOU11UHJhQVErSXNuUGYzNjZSRzRjUDlSdFVpN01MTzFOM0tFYyt3YjBhNnlLcGVMMGxtazJJQjFqWTVLSFBBbFRjNlQvSlJkQy9ZcXhITndrUT09Il0sCgogICAgInBhdGhlIjogWyJwYXRoZUAyLjAuMyIsICIiLCB7fSwgInNoYTUxMi1XVWpHY0FxUDFnUWFjb1FlK09CSnNGQTdMZDREeVh1VUlqWjVjYzc1Y0xIdko3ZHROc1R1Z3BoeElBRHdzcFMrQXJhQVVlUENLclNWdFBMRmovRjg4dz09Il0sCgogICAgInBpY29jb2xvcnMiOiBbInBpY29jb2xvcnNAMS4xLjEiLCAiIiwge30sICJzaGE1MTIteGNlSDJzbmh0YjVNOWxpcURzbUV3NTZsZTM3Nm1UWmtFWC9qRWIvUnhORnllZ051bDdlTnNsQ1hQOUZEai9MY3UwWDhLRXlNY2VQMm50cGFIckRFVkE9PSJdLAoKICAgICJwaWNvbWF0Y2giOiBbInBpY29tYXRjaEA0LjAuNCIsICIiLCB7fSwgInNoYTUxMi1RUDg4QkFLdk1hbS8zTnhINnZqMm8yMVI2TWp4WlVBZDZubHdBUy9wbkd2TjlJVkxvY0xIeEdZSXpGaGc2ZlVRKzV0aDZQNGR2NGVXOWpYM0RTSWo3QT09Il0sCgogICAgInBvc3Rjc3MiOiBbInBvc3Rjc3NAOC41LjE1IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIm5hbm9pZCI6ICJeMy4zLjEyIiwgInBpY29jb2xvcnMiOiAiXjEuMS4xIiwgInNvdXJjZS1tYXAtanMiOiAiXjEuMi4xIiB9IH0sICJzaGE1MTItRmZSOHNqZDRlbTJUNmZiM0kyTXdBSlU3SFdWTXI5emJhK2VubVFlZVdGZkNibStVT0MvMFg0RFM4WHRwVVRNd1dNR2JqS1lQN3hqZk5la3p5R21CM0E9PSJdLAoKICAgICJyZWFjdCI6IFsicmVhY3RAMTkuMi42IiwgIiIsIHt9LCAic2hhNTEyLXNmV0dHZmF2aTB4cjhQZzBzVnN5SE1BT3ppVllLZ1BMTnJTN2lnK2l2TU5iM3diQ0J3M0t4dGZsc0dCQXdEM2dZUWxFL0FFWnNUTGdUb1JyU0NqYjBRPT0iXSwKCiAgICAicmVhY3QtZGF5LXBpY2tlciI6IFsicmVhY3QtZGF5LXBpY2tlckA5LjE0LjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGRhdGUtZm5zL3R6IjogIl4xLjQuMSIsICJAdGFiYnlfYWkvaGlqcmktY29udmVydGVyIjogIjEuMC41IiwgImRhdGUtZm5zIjogIl40LjEuMCIsICJkYXRlLWZucy1qYWxhbGkiOiAiNC4xLjAtMCIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJyZWFjdCI6ICI+PTE2LjguMCIgfSB9LCAic2hhNTEyLXRCYW9EV2pQd2UwTTVwR3J1bTRIMFNSNkx5aytCTzlvSG5wOUpiS3BHS1cybWxyYU5QZ1A5Qk1mc2c1cFdwd3Jzc0FSbWVxazdZQmwyb1h1dFpUYUhBPT0iXSwKCiAgICAicmVhY3QtZG9tIjogWyJyZWFjdC1kb21AMTkuMi42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInNjaGVkdWxlciI6ICJeMC4yNy4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgInJlYWN0IjogIl4xOS4yLjYiIH0gfSwgInNoYTUxMi0wcHJNSStodkJiUGpzV254REx4bENHeU04UE42VXVXakVVQ1ltWmhPNjd4SVY5WGFzYS9yL3ZEbnErWHlxNExvMjdnOFFTYk81WXpBUnUwRDFTcHMzZz09Il0sCgogICAgInJlcXVpcmUtZGlyZWN0b3J5IjogWyJyZXF1aXJlLWRpcmVjdG9yeUAyLjEuMSIsICIiLCB7fSwgInNoYTUxMi1mR3hFSTcrd3NHOXhydmRqc3JsbUwyMk9NVFRpSFJ3QU1yb2lFZU1ncThnem9MQy9QUXI3UnNSRFNUTFVnL2JaQVp0RitUVklrSGM2LzRSSUtydWkrUT09Il0sCgogICAgInJlc2VsZWN0IjogWyJyZXNlbGVjdEA1LjIuMCIsICIiLCB7fSwgInNoYTUxMi1BZ1ozVU9abTNZbmRmcko0T1lqZ3JUN2JtQ20vMWlxa2p2RWZIL29ZanpoNlBEMnF3NFF1VDNqam5YSXJwZHQ0TVRwTVhjbE1UM2xYYm1SWStYUmFrdz09Il0sCgogICAgInJvbGxkb3duIjogWyJyb2xsZG93bkAxLjAuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAb3hjLXByb2plY3QvdHlwZXMiOiAiPTAuMTMwLjAiLCAiQHJvbGxkb3duL3BsdWdpbnV0aWxzIjogIl4xLjAuMCIgfSwgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQHJvbGxkb3duL2JpbmRpbmctYW5kcm9pZC1hcm02NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1kYXJ3aW4tYXJtNjQiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1mcmVlYnNkLXg2NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmIjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LWFybTY0LWdudSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsIjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXBwYzY0LWdudSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1zMzkweC1nbnUiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctbGludXgteDY0LWdudSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC14NjQtbXVzbCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1vcGVuaGFybW9ueS1hcm02NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy13YXNtMzItd2FzaSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjIjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLXdpbjMyLXg2NC1tc3ZjIjogIjEuMC4xIiB9LCAiYmluIjogeyAicm9sbGRvd24iOiAiYmluL2NsaS5tanMiIH0gfSwgInNoYTUxMi1YMEtRSGxqTm5Fa1dOcXFpejl6SnJHdW5oMUIwSGdPeExYdm5GcENPY2FkemN5NXFvaFozdHFNRVVnMDB2bmNvUm92WHVLM1pxQ1Q5S25uS3pvSW5GUT09Il0sCgogICAgInJ4anMiOiBbInJ4anNANy44LjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuMS4wIiB9IH0sICJzaGE1MTItZGhLZjkwM1UvUFFaWTZib05OdEFHZFdiRzg1V0FialQvMXhZb1pJQzdGQVkweVdhcE9CUVZzVnJEbDU4Vzg2Ly9lMVZwTU5CdFJWNE1hWGZkTXlTRkE9PSJdLAoKICAgICJzY2hlZHVsZXIiOiBbInNjaGVkdWxlckAwLjI3LjAiLCAiIiwge30sICJzaGE1MTItZU52K1dyVmJLdTFmM3ZiWUpUL3h0aUY1c3lBNUhQSU10ZjlJZ1kvbktnMHNXcXpBVUV2cVkveG03T2NaYy9xYWZMeC9pTzlGZ09tZVNBcDR2NXRpL1E9PSJdLAoKICAgICJzZW12ZXIiOiBbInNlbXZlckA3LjguMCIsICIiLCB7ICJiaW4iOiB7ICJzZW12ZXIiOiAiYmluL3NlbXZlci5qcyIgfSB9LCAic2hhNTEyLUFjTTdkVi81dWw0RWVrb1EyOUFnbTV2cmk4Sk5xUnlqMzlvMHFwWDZ2REYyR1pydHV0Wmw1UndnRDFYblpqaVRBZm5jc0poTUk0OFFRSDNzTjg3WU5BPT0iXSwKCiAgICAic2hhcnAiOiBbInNoYXJwQDAuMzQuNSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAaW1nL2NvbG91ciI6ICJeMS4wLjAiLCAiZGV0ZWN0LWxpYmMiOiAiXjIuMS4yIiwgInNlbXZlciI6ICJeNy43LjMiIH0sICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtZGFyd2luLWFybTY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLWRhcndpbi14NjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWRhcndpbi14NjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybSI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgtYXJtNjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1yaXNjdjY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1zMzkweCI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgteDY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4bXVzbC14NjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saW51eC1hcm0iOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgtYXJtNjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgtcHBjNjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgtcmlzY3Y2NCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC1saW51eC1zMzkweCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC1saW51eC14NjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXhtdXNsLWFybTY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLWxpbnV4bXVzbC14NjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtd2FzbTMyIjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLXdpbjMyLWFybTY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLXdpbjMyLWlhMzIiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtd2luMzIteDY0IjogIjAuMzQuNSIgfSB9LCAic2hhNTEyLU91OUk1RnQ5V05jQ2JYclU5Y01nUEJjQ0s4TGl3THFjYnl3VzN0NG9EVjM3bjFwenB1TkxzWWlBVjhlT0RuamJ0UWxTRHdaMmNVRWVRejRFNTRIbHRnPT0iXSwKCiAgICAic2hlbGwtcXVvdGUiOiBbInNoZWxsLXF1b3RlQDEuOC4zIiwgIiIsIHt9LCAic2hhNTEyLU9ibW5JRjRoWE5nMUJxaG5IbWdiREVURjhkTFBDZ2daV0Jqa1FmaFpwYnN6Wm5ZdXI1RFVsalRjQ0hpaTVMQzNKNUUweWVPLzFMSU15SCtVdkhRZ3l3PT0iXSwKCiAgICAic2lnaW5mbyI6IFsic2lnaW5mb0AyLjAuMCIsICIiLCB7fSwgInNoYTUxMi15YngwV08xLzhiU0JMRVdYWnZFZDdnTVczU24zSkZsVzNUdlgxblJFYkRMUk5RTmFlTk44V0swbWVCd1BkQWFPSTdUdFJSUkpuL0VzMXpocnJDSHU3Zz09Il0sCgogICAgInNvdXJjZS1tYXAiOiBbInNvdXJjZS1tYXBAMC42LjEiLCAiIiwge30sICJzaGE1MTItVWpnYXB1bVdsYk1oa0JnelQ3WWtjNVlYVVQ0NkYwaUt1OFNHWHEwYmN3UDVkei9oMFBsajZlbkpxanoxWmJxMmw1V2FxWW5yVmJ3V09XTXlGM0Y0N2c9PSJdLAoKICAgICJzb3VyY2UtbWFwLWpzIjogWyJzb3VyY2UtbWFwLWpzQDEuMi4xIiwgIiIsIHt9LCAic2hhNTEyLVVYV01LaExPd1ZLYjcyOElVdFFQWHhmWVUrdXNkeWJ0VXJLLzh1R0U4Q1FNdnJoT3B3dnpEQndqMFFoU0w3TVFjN3ZJc0lTQkc4VlE4K0lEUXhwZlFBPT0iXSwKCiAgICAic291cmNlLW1hcC1zdXBwb3J0IjogWyJzb3VyY2UtbWFwLXN1cHBvcnRAMC41LjIxIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImJ1ZmZlci1mcm9tIjogIl4xLjAuMCIsICJzb3VyY2UtbWFwIjogIl4wLjYuMCIgfSB9LCAic2hhNTEyLXVCSFUzTDNjenNJeVlYS1g4OGZkckdvdnhkU0NvVEdEUlo2U1lYdFNSeExaVXpIZzVQLzY2SHQ2dW9VbEh1OUVab2QraW5YaEtvM3FRZ3dYVVQveTF3PT0iXSwKCiAgICAic3RhY2tiYWNrIjogWyJzdGFja2JhY2tAMC4wLjIiLCAiIiwge30sICJzaGE1MTItMVhNSkU1ZlFvMWpHSDZZLzdlYm53UE9CRWtJRW5UNFFGMzJkNVIxK1ZYZFh2ZU0wSUJNSnQ4emZheFgxUDNRaFZ3clllKzU3Nitqa0FOdFNTMm1CYnc9PSJdLAoKICAgICJzdGQtZW52IjogWyJzdGQtZW52QDQuMS4wIiwgIiIsIHt9LCAic2hhNTEyLVJxN3liY1gyUnVDNTVyOW9hUFZFVzcveHUzdGo4dTRHZUJZSEJXQ3ljaEZ0ek1Jcjg2QTdlM1BQRUJQVDM3c0hTdEtYMytUaVgvRnIvQUNtSkxWbExRPT0iXSwKCiAgICAic3RyaW5nLXdpZHRoIjogWyJzdHJpbmctd2lkdGhANC4yLjMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZW1vamktcmVnZXgiOiAiXjguMC4wIiwgImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50IjogIl4zLjAuMCIsICJzdHJpcC1hbnNpIjogIl42LjAuMSIgfSB9LCAic2hhNTEyLXdLeVFSUXBqSjBzSXA2MkVyU1pkR3NqTUpXc2FwNW9STmloSGh1Nkc3SlZPLzlqSUI2VXlldkwrdFh1T3Fybmc4ai9jeEtUV3lXVXd2U1RyaWlaei9nPT0iXSwKCiAgICAic3RyaXAtYW5zaSI6IFsic3RyaXAtYW5zaUA2LjAuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJhbnNpLXJlZ2V4IjogIl41LjAuMSIgfSB9LCAic2hhNTEyLVkzOFZQU0hjcWtGckNwRm5ROXZ1U1htcXV1djVvWE9LcEdlVDZhR3JyM28zR2M5QWxWYTZKQmZVU09DbmJ4R0daRisvMG9vSTdLclB1VVN6dFVkVTVBPT0iXSwKCiAgICAic3R5bGVkLWpzeCI6IFsic3R5bGVkLWpzeEA1LjEuNiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjbGllbnQtb25seSI6ICIwLjAuMSIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJyZWFjdCI6ICI+PSAxNi44LjAgfHwgMTcueC54IHx8IF4xOC4wLjAtMCB8fCBeMTkuMC4wLTAiIH0gfSwgInNoYTUxMi1xU1Z5RFRlTW90ZHZRWW9IV0xOR3dSRkpIQytpK1p2ZEJSWW9zT0ZnQytXZzF2eDRmck4yL1JHL05BN1NZcXF2S05MZjM5UDJMU1JBMnB1Nm4wWFlaQT09Il0sCgogICAgInN1cHBvcnRzLWNvbG9yIjogWyJzdXBwb3J0cy1jb2xvckA4LjEuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJoYXMtZmxhZyI6ICJeNC4wLjAiIH0gfSwgInNoYTUxMi1NcFVFTjJPb2R0VXp4dktRbDcyY1VGN1JRNUVpSHNHdlNzVkcwaWE5YzVSYldHTDJDSTRDN0VwUFM4VVRCSXBsbmx6WmlOdVY1NncrRnVOeHkzdHkyUT09Il0sCgogICAgInRhaWx3aW5kLW1lcmdlIjogWyJ0YWlsd2luZC1tZXJnZUAzLjYuMCIsICIiLCB7fSwgInNoYTUxMi11eEw3cUFWUXJpcVJRUEF5SzNwajY2VnFza1dxb1ozN1BXOTRqd09Ud05mcS96OW95dTFWK2VxclpxdFIyK2ZDaVhkWU9aZS9Nb2R0OEd0dnFOenUrdz09Il0sCgogICAgInRhaWx3aW5kY3NzIjogWyJ0YWlsd2luZGNzc0A0LjMuMCIsICIiLCB7fSwgInNoYTUxMi15Nm54TUdCMW5NVzlSNms5NmU1Z2RJRnpjZkwvZ1RKUk5hcUdlczFZdmtMblBWWHpXZ2JxRkYyeUxDMFQ4Rzc3NG4yNGN4M1BlOFhyS29uaUNPQUgrUT09Il0sCgogICAgInRhcGFibGUiOiBbInRhcGFibGVAMi4zLjMiLCAiIiwge30sICJzaGE1MTItdXhjL3pwcUZnNng3Qzh2T0U3bGg2TGJkYThlRUw5em1WbS9QTGVUUEJSaGgxeENnZFdhUStKMUNVaWVHcElmbTJIZHRzVXBSditIc2hpYXNCTWNjNkE9PSJdLAoKICAgICJ0ZXJzZXIiOiBbInRlcnNlckA1LjE2LjkiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlLW1hcCI6ICJeMC4zLjIiLCAiYWNvcm4iOiAiXjguNS4wIiwgImNvbW1hbmRlciI6ICJeMi4yMC4wIiwgInNvdXJjZS1tYXAtc3VwcG9ydCI6ICJ+MC41LjIwIiB9LCAiYmluIjogeyAidGVyc2VyIjogImJpbi90ZXJzZXIiIH0gfSwgInNoYTUxMi1IUGEvRmRUQjlYR0kySDEva2VMRlpIeGw2V052QUk0WWFsSEd0RFFUbE1uSmNvcVNhYjFVd0w0bDFoR0VoczYvR21MSEJaSWcvWWdCKytqY2J6b09FZz09Il0sCgogICAgInRpbnliZW5jaCI6IFsidGlueWJlbmNoQDIuOS4wIiwgIiIsIHt9LCAic2hhNTEyLTArRFV2cVdNVmFsTG1oYTZscjRrRDhpQU1LMUh6VjAvYUtuQ3RXYjl2OTY0MVRuUC9NRmI3UGMyYnhveFFqVFhBRXJyeVhWZ1VPZnYyWXFObGxxR2VnPT0iXSwKCiAgICAidGlueWV4ZWMiOiBbInRpbnlleGVjQDEuMS4yIiwgIiIsIHt9LCAic2hhNTEyLWRBcVNxRS9SYWJwQktJOCtoMjZHZkxxNlZiM0pWWHMzMFhZUWpkTWphai9jMnRTOElZWU1iSXpQNTk5S3RSajdjNTcvd1lBcGIzUWpnUmdYbXJDdWtBPT0iXSwKCiAgICAidGlueWdsb2JieSI6IFsidGlueWdsb2JieUAwLjIuMTYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZmRpciI6ICJeNi41LjAiLCAicGljb21hdGNoIjogIl40LjAuNCIgfSB9LCAic2hhNTEyLXBuOTlWaG9BQ1lSOG5GSGh4cWl4K3V2c2JYaW5lQWFzV201b2pYb044eEV3SzVLZDMvVHJoTm4xd0J5dUQ1MlV4V1JMeThwdStrUk1uaUVpNkVxOVpnPT0iXSwKCiAgICAidGlueXJhaW5ib3ciOiBbInRpbnlyYWluYm93QDMuMS4wIiwgIiIsIHt9LCAic2hhNTEyLUJmK0lMbUJncmV0VXJkSnh6WE0wU2dYTFozWGZpYVV1T2ovSUtRSHVUWGlwKzA1WG4rdXlFWWRWZzBrWURpcFRCY0xyQ1Z5VXpBUHo3UW1BcmIwbW13PT0iXSwKCiAgICAidHJlZS1raWxsIjogWyJ0cmVlLWtpbGxAMS4yLjIiLCAiIiwgeyAiYmluIjogeyAidHJlZS1raWxsIjogImNsaS5qcyIgfSB9LCAic2hhNTEyLUwwT3JwaThxR3BSRy8vTmQrSDkwdkZCKzNpSG51ZTF6U1NHbU5PT0NoMUdMSjdyVUtWd1YySHZpanBoR1FTMlVtaFVaZXdTOVZndnhZSWRncitmRzFBPT0iXSwKCiAgICAidHNsaWIiOiBbInRzbGliQDIuOC4xIiwgIiIsIHt9LCAic2hhNTEyLW9KRnU5NEhRYitLVmR1U1VRTDd3bnBtcW5mbUxzT0EvbkFoNmI2RUgwd0NFb0swL21QZVhVNmMzd0tEVjgzTWtPdUhQUkh0U1hLS1U5OUlCYXpTLzJ3PT0iXSwKCiAgICAidHlwZXNjcmlwdCI6IFsidHlwZXNjcmlwdEA1LjkuMyIsICIiLCB7ICJiaW4iOiB7ICJ0c2MiOiAiYmluL3RzYyIsICJ0c3NlcnZlciI6ICJiaW4vdHNzZXJ2ZXIiIH0gfSwgInNoYTUxMi1qbDF2WnpQRGluTHI5ZVV0M0ovdDdWNkZnTkV3OVFqdkJQZHlzejlLZlFERDQxZlFyQzJZNHZLUWRpYVVwRlQ0YlhsYjFSSGhMcHA4d3RtNk01VGdTdz09Il0sCgogICAgInVuZGljaS10eXBlcyI6IFsidW5kaWNpLXR5cGVzQDYuMjEuMCIsICIiLCB7fSwgInNoYTUxMi1pd0RacWcwUUFHcmc5UmF2NUg0bjBNNjRjM21rUjU5Y0o2d1FwKzdDNG5JMGdzbUV4YWVkYVlMTk80NGVUNEF0QkJ3amJUaUdQTWx0Mk1kMFQ5SDlKUT09Il0sCgogICAgInVzZS1zeW5jLWV4dGVybmFsLXN0b3JlIjogWyJ1c2Utc3luYy1leHRlcm5hbC1zdG9yZUAxLjYuMCIsICIiLCB7ICJwZWVyRGVwZW5kZW5jaWVzIjogeyAicmVhY3QiOiAiXjE2LjguMCB8fCBeMTcuMC4wIHx8IF4xOC4wLjAgfHwgXjE5LjAuMCIgfSB9LCAic2hhNTEyLVBwNkdTd0dQL05yUElyeFZGQUlrT1FleXc4bEZlbk9IaWpRV2tVVHJEdnJGNEFMcXlsUDJDL0tDa2VTOWRwVU0zS3ZZUlFobmE1dnQ3SUw5NStaUTl3PT0iXSwKCiAgICAidml0ZSI6IFsidml0ZUA4LjAuMTMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAibGlnaHRuaW5nY3NzIjogIl4xLjMyLjAiLCAicGljb21hdGNoIjogIl40LjAuNCIsICJwb3N0Y3NzIjogIl44LjUuMTQiLCAicm9sbGRvd24iOiAiMS4wLjEiLCAidGlueWdsb2JieSI6ICJeMC4yLjE2IiB9LCAib3B0aW9uYWxEZXBlbmRlbmNpZXMiOiB7ICJmc2V2ZW50cyI6ICJ+Mi4zLjMiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL25vZGUiOiAiXjIwLjE5LjAgfHwgPj0yMi4xMi4wIiwgIkB2aXRlanMvZGV2dG9vbHMiOiAiXjAuMS4xOCIsICJlc2J1aWxkIjogIl4wLjI3LjAgfHwgXjAuMjguMCIsICJqaXRpIjogIj49MS4yMS4wIiwgImxlc3MiOiAiXjQuMC4wIiwgInNhc3MiOiAiXjEuNzAuMCIsICJzYXNzLWVtYmVkZGVkIjogIl4xLjcwLjAiLCAic3R5bHVzIjogIj49MC41NC44IiwgInN1Z2Fyc3MiOiAiXjUuMC4wIiwgInRlcnNlciI6ICJeNS4xNi4wIiwgInRzeCI6ICJeNC44LjEiLCAieWFtbCI6ICJeMi40LjIiIH0sICJvcHRpb25hbFBlZXJzIjogWyJAdHlwZXMvbm9kZSIsICJAdml0ZWpzL2RldnRvb2xzIiwgImVzYnVpbGQiLCAiaml0aSIsICJsZXNzIiwgInNhc3MiLCAic2Fzcy1lbWJlZGRlZCIsICJzdHlsdXMiLCAic3VnYXJzcyIsICJ0ZXJzZXIiLCAidHN4IiwgInlhbWwiXSwgImJpbiI6IHsgInZpdGUiOiAiYmluL3ZpdGUuanMiIH0gfSwgInNoYTUxMi1NRnRqQllnem1TeG1nQTRSQWZqSXlYV3BHZTFvQUxuamdVVHp6VjdRTHgvVEt4Q3pqdE1INkZkOS9lVksrNUZnMXFOb3o1VkF3c21Ncy9Ob2ZybUp2dz09Il0sCgogICAgInZpdGVzdCI6IFsidml0ZXN0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvZXhwZWN0IjogIjQuMS42IiwgIkB2aXRlc3QvbW9ja2VyIjogIjQuMS42IiwgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6ICI0LjEuNiIsICJAdml0ZXN0L3J1bm5lciI6ICI0LjEuNiIsICJAdml0ZXN0L3NuYXBzaG90IjogIjQuMS42IiwgIkB2aXRlc3Qvc3B5IjogIjQuMS42IiwgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAiZXMtbW9kdWxlLWxleGVyIjogIl4yLjAuMCIsICJleHBlY3QtdHlwZSI6ICJeMS4zLjAiLCAibWFnaWMtc3RyaW5nIjogIl4wLjMwLjIxIiwgIm9idWciOiAiXjIuMS4xIiwgInBhdGhlIjogIl4yLjAuMyIsICJwaWNvbWF0Y2giOiAiXjQuMC4zIiwgInN0ZC1lbnYiOiAiXjQuMC4wLXJjLjEiLCAidGlueWJlbmNoIjogIl4yLjkuMCIsICJ0aW55ZXhlYyI6ICJeMS4wLjIiLCAidGlueWdsb2JieSI6ICJeMC4yLjE1IiwgInRpbnlyYWluYm93IjogIl4zLjEuMCIsICJ2aXRlIjogIl42LjAuMCB8fCBeNy4wLjAgfHwgXjguMC4wIiwgIndoeS1pcy1ub2RlLXJ1bm5pbmciOiAiXjIuMy4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBlZGdlLXJ1bnRpbWUvdm0iOiAiKiIsICJAb3BlbnRlbGVtZXRyeS9hcGkiOiAiXjEuOS4wIiwgIkB0eXBlcy9ub2RlIjogIl4yMC4wLjAgfHwgXjIyLjAuMCB8fCA+PTI0LjAuMCIsICJAdml0ZXN0L2Jyb3dzZXItcGxheXdyaWdodCI6ICI0LjEuNiIsICJAdml0ZXN0L2Jyb3dzZXItcHJldmlldyI6ICI0LjEuNiIsICJAdml0ZXN0L2Jyb3dzZXItd2ViZHJpdmVyaW8iOiAiNC4xLjYiLCAiQHZpdGVzdC9jb3ZlcmFnZS1pc3RhbmJ1bCI6ICI0LjEuNiIsICJAdml0ZXN0L2NvdmVyYWdlLXY4IjogIjQuMS42IiwgIkB2aXRlc3QvdWkiOiAiNC4xLjYiLCAiaGFwcHktZG9tIjogIioiLCAianNkb20iOiAiKiIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkBlZGdlLXJ1bnRpbWUvdm0iLCAiQG9wZW50ZWxlbWV0cnkvYXBpIiwgIkB0eXBlcy9ub2RlIiwgIkB2aXRlc3QvYnJvd3Nlci1wbGF5d3JpZ2h0IiwgIkB2aXRlc3QvYnJvd3Nlci1wcmV2aWV3IiwgIkB2aXRlc3QvYnJvd3Nlci13ZWJkcml2ZXJpbyIsICJAdml0ZXN0L2NvdmVyYWdlLWlzdGFuYnVsIiwgIkB2aXRlc3QvY292ZXJhZ2UtdjgiLCAiQHZpdGVzdC91aSIsICJoYXBweS1kb20iLCAianNkb20iXSwgImJpbiI6IHsgInZpdGVzdCI6ICJ2aXRlc3QubWpzIiB9IH0sICJzaGE1MTItNmx2amJTM3A5YjRDcmRDbWd1emJoMi80dW9YaEdFMnE3MVI0T1g1c3FGOVIxYm85WGQ2ZkdyTUFmdnA1d25DemxCbkZWZENPcDZvbnVUUVZibzhpVVE9PSJdLAoKICAgICJ3aHktaXMtbm9kZS1ydW5uaW5nIjogWyJ3aHktaXMtbm9kZS1ydW5uaW5nQDIuMy4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInNpZ2luZm8iOiAiXjIuMC4wIiwgInN0YWNrYmFjayI6ICIwLjAuMiIgfSwgImJpbiI6IHsgIndoeS1pcy1ub2RlLXJ1bm5pbmciOiAiY2xpLmpzIiB9IH0sICJzaGE1MTItaFVybWFXQmRWRGN4dllxbnloMDl6dW5LelJPV2piWlRpTnk4ZEJFamtTN2VoRURRaWJYSjdYdmxtdGJ3dVRjbFVpSXlOK0N5WFFENFZta284Zk5tOHc9PSJdLAoKICAgICJ3cmFwLWFuc2kiOiBbIndyYXAtYW5zaUA3LjAuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJhbnNpLXN0eWxlcyI6ICJeNC4wLjAiLCAic3RyaW5nLXdpZHRoIjogIl40LjEuMCIsICJzdHJpcC1hbnNpIjogIl42LjAuMCIgfSB9LCAic2hhNTEyLVlWR0lqMmthbUxTVHh3Nk5zWmpvQnhmU3dzbjB5Y2Rlc21jNHArUTIxYzV6UHVaMXBsK05meFZkeFB0ZEh2bU5WT1E2WFNZRzRBVXR5dC9GaTdEMTZRPT0iXSwKCiAgICAieTE4biI6IFsieTE4bkA1LjAuOCIsICIiLCB7fSwgInNoYTUxMi0wcGZGemVnZURXSkhKSUFtVExSUDJEd0hqZEY1czdqbzl0dXp0ZFF4QWhJTkNkdlMrM25HSU5xUGQwMEFwaHFKUi8wTGhBTlVTNi8rN1NDYjk4WU9mQT09Il0sCgogICAgInlhbWwiOiBbInlhbWxAMi45LjAiLCAiIiwgeyAiYmluIjogeyAieWFtbCI6ICJiaW4ubWpzIiB9IH0sICJzaGE1MTItMkF2aE5YM21iOHpkNlp5N0lOVHRTcGwxRjE1SFc2V25xajBzcldsa0tMY3BZbC9nTUlNSml5dUdxMktlSTJZRnhVUGpkbEIrM0xjMTBzZU1MdEw0Y0E9PSJdLAoKICAgICJ5YXJncyI6IFsieWFyZ3NAMTcuNy4yIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImNsaXVpIjogIl44LjAuMSIsICJlc2NhbGFkZSI6ICJeMy4xLjEiLCAiZ2V0LWNhbGxlci1maWxlIjogIl4yLjAuNSIsICJyZXF1aXJlLWRpcmVjdG9yeSI6ICJeMi4xLjEiLCAic3RyaW5nLXdpZHRoIjogIl40LjIuMyIsICJ5MThuIjogIl41LjAuNSIsICJ5YXJncy1wYXJzZXIiOiAiXjIxLjEuMSIgfSB9LCAic2hhNTEyLTdkU3p6UlErK0NLbk5JL2tyS25ZUlY3SktLUFVYTUVoNjFzb2FIS2c5bXJXRWh6RldoRm54UHhHbCs2OWNEMU91NjNDMTNOVVBDbm1JY3J2cUN1TTZ3PT0iXSwKCiAgICAieWFyZ3MtcGFyc2VyIjogWyJ5YXJncy1wYXJzZXJAMjEuMS4xIiwgIiIsIHt9LCAic2hhNTEyLXRWcHNKVzdEZGplY0FpRnBiSUIxZTNxeElRc0U2Tm9QYzUvZVRkcmJiSUM0aDBMVnNXaG5vYTNnK20ySGNsQkl1akh6c3haNFZKVkErR1V1YzIvTEJ3PT0iXSwKCiAgICAiem9kIjogWyJ6b2RANC40LjMiLCAiIiwge30sICJzaGE1MTIteXRFTkZqSUpGbDJVd1lnbGRlMmpjaFcySHdtNEdKRkxEaVNYV2RUckpRQklOOUZjeXA3bjREaHhKRWlXTkFKTVYxL0JxV2ZXL2trZzcxVURjSEp5VFE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQGVtbmFwaS9jb3JlIjogWyJAZW1uYXBpL2NvcmVAMS4xMC4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvd2FzaS10aHJlYWRzIjogIjEuMi4xIiwgInRzbGliIjogIl4yLjQuMCIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTIteXE2T2tKNHA4MkNBZlBsMHU5bVFlYlFIS1BKa1k3V3JJdWsyMDVjVFluWWUrazJaOFlCaDExRnJiUkcvSDZpaGlycWNhY09nbDJCSU84b3lNUUxlWHc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQGVtbmFwaS9ydW50aW1lIjogWyJAZW1uYXBpL3J1bnRpbWVAMS4xMC4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRzbGliIjogIl4yLjQuMCIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItZXd2WWxrODZ4VW9HSTB6UVJOcS9tQysxNlIxUWVEbEtReTIxS2kzb1NZWE5nTGI0NUdWMVA2QTBNKy9zNm55Q3VORHFlNVZwYVk4NEJ6WEd3VmJ3RkE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQGVtbmFwaS93YXNpLXRocmVhZHMiOiBbIkBlbW5hcGkvd2FzaS10aHJlYWRzQDEuMi4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRzbGliIjogIl4yLjQuMCIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItdVRJSTdPWUYrL01lcy9NcmNJT1lwNXlPdFNNTEJXU0lvTFBwY2d3aXBvaUtibGk2azMyMnRjb0ZzeG9JSXhQRHFXMDFTUUdBZ2tvNEV6WmkyQk52Mnc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQG5hcGktcnMvd2FzbS1ydW50aW1lIjogWyJAbmFwaS1ycy93YXNtLXJ1bnRpbWVAMS4xLjQiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHR5YnlzL3dhc20tdXRpbCI6ICJeMC4xMC4xIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvY29yZSI6ICJeMS43LjEiLCAiQGVtbmFwaS9ydW50aW1lIjogIl4xLjcuMSIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItM05RTk5nQTFZU2xKYi9rTUgxaWxkQVNQOUhXNy83a1luUkkyc3pXSmFvZmFTMWhXbWJHSTRIK2QzKzIyYUd6WFhOOUlKK24rR2lGVmNHaXBKUDE4b3c9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQHR5YnlzL3dhc20tdXRpbCI6IFsiQHR5YnlzL3dhc20tdXRpbEAwLjEwLjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9LCAiYnVuZGxlZCI6IHRydWUgfSwgInNoYTUxMi1Sb0J2SjJYMHd1S2xXRklqcndmZkd3MUlxWkhLUXF6SWNoS2FhZFpaZm5OcHNBWXAybU0waDM2SnRQQ2pOREFIR2dZZXovMTV1TUJwZkd3Y2hoaU1nZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS13YXNtMzItd2FzaS90c2xpYiI6IFsidHNsaWJAMi44LjEiLCAiIiwgeyAiYnVuZGxlZCI6IHRydWUgfSwgInNoYTUxMi1vSkZ1OTRIUWIrS1ZkdVNVUUw3d25wbXFuZm1Mc09BL25BaDZiNkVIMHdDRW9LMC9tUGVYVTZjM3dLRFY4M01rT3VIUFJIdFNYS0tVOTlJQmF6Uy8ydz09Il0sCgogICAgImNoYWxrL3N1cHBvcnRzLWNvbG9yIjogWyJzdXBwb3J0cy1jb2xvckA3LjIuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJoYXMtZmxhZyI6ICJeNC4wLjAiIH0gfSwgInNoYTUxMi1xcENBdlJsOXN0dU9IdmVLc243SG5jSlJ2djUwMXFJYWNLelFsTy8rTHd4YzkrMHEyd0x5djREZnZ0ODAvRFBuMnBxT0JzSmREaW9nWEdSOStPdndSdz09Il0sCgogICAgIm5leHQvcG9zdGNzcyI6IFsicG9zdGNzc0A4LjQuMzEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAibmFub2lkIjogIl4zLjMuNiIsICJwaWNvY29sb3JzIjogIl4xLjAuMCIsICJzb3VyY2UtbWFwLWpzIjogIl4xLjAuMiIgfSB9LCAic2hhNTEyLVBTMDhJYm9pYTltdHMvMnlnVjNlTHBZNWdoblVjZkxWL0VYVE9XMUUycVl4SktHR0JVdE5qTjc2RllIbk1zMzZSbUFSbjQxYkMwQVptbityUjBPVnBRPT0iXSwKICB9Cn0K" }, { "path": "metadata.json", "kind": "text", "content": '{\n "id": "auto",\n "name": "Auto Parts",\n "tagline": "Auto-parts storefront with vehicle fitment finder and installation booking.",\n "industry": "automotive",\n "tags": ["automotive", "parts", "fitment"],\n "stability": "stable",\n "schemaType": "AutoPartsStore",\n "mock": {\n "seedName": "auto",\n "seedBusinessId": "bus_driveline_auto"\n }\n}\n' }, { "path": "next.config.ts", "kind": "text", "content": 'import type { NextConfig } from "next";\n\n// Same-origin proxy target for the storefront API. The public key\n// decides: a real `cpk_live_\u2026` / `cpk_test_\u2026` only resolves against\n// hosted Cimplify, so browser cart writes go to the same place the\n// server catalogue reads come from. Anything else (`mock-dev`, empty)\n// falls back to the local `cimplify dev` mock in dev.\nconst publicKey = process.env.NEXT_PUBLIC_CIMPLIFY_PUBLIC_KEY?.trim() ?? "";\nconst keyTargetsHostedCimplify =\n publicKey.startsWith("cpk_live_") || publicKey.startsWith("cpk_test_");\nconst STOREFRONT_URL =\n process.env.NODE_ENV === "production" || keyTargetsHostedCimplify\n ? "https://storefronts.cimplify.io"\n : "http://127.0.0.1:8787";\n\nif (STOREFRONT_URL === "http://127.0.0.1:8787") {\n console.warn(\n "[cimplify] next.config resolved the local storefront API URL; production deploys must run with NODE_ENV=production.",\n );\n}\n\n// Cache Components (\'use cache\' + cacheTag/cacheLife) require Node-specific\n// setTimeout atomicity and serialize a postponed state that routinely exceeds\n// CF Workers\' 128MB zlib limit. We\'re on Cloudflare Workers via opennext, so\n// we stay on Next 16\'s "Previous Model" \u2014 `fetch.next.{revalidate,tags}` via\n// the SDK\'s `cacheOptions`, plus `export const revalidate` per page. See\n// https://nextjs.org/docs/app/guides/caching-without-cache-components.\nconst nextConfig: NextConfig = {\n async redirects() {\n return [\n { source: "/login", destination: "/account", permanent: false },\n { source: "/signup", destination: "/account", permanent: false },\n ];\n },\n async rewrites() {\n return [\n { source: "/api/v1/:path*", destination: `${STOREFRONT_URL}/api/v1/:path*` },\n { source: "/img/:path*", destination: `${STOREFRONT_URL}/img/:path*` },\n { source: "/elements/:path*", destination: `${STOREFRONT_URL}/elements/:path*` },\n { source: "/_mock/:path*", destination: `${STOREFRONT_URL}/_mock/:path*` },\n ];\n },\n images: {\n loader: "custom",\n loaderFile: "./lib/cimplify-loader.ts",\n remotePatterns: [\n { protocol: "http", hostname: "127.0.0.1", port: "8787", pathname: "/img/**" },\n { protocol: "http", hostname: "localhost", port: "8787", pathname: "/img/**" },\n { protocol: "http", hostname: "localhost", port: "3000", pathname: "/img/**" },\n { protocol: "https", hostname: "loremflickr.com", pathname: "/**" },\n { protocol: "https", hostname: "images.unsplash.com", pathname: "/**" },\n { protocol: "https", hostname: "static-tmp.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "storefrontassetscdn.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "cdn.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "res.cloudinary.com", pathname: "/cimplify/**" },\n ],\n },\n};\n\nexport default nextConfig;\n' }, { "path": "CLAUDE.md", "kind": "text", "content": "# CLAUDE.md\n\nThis project was scaffolded from a Cimplify storefront template (`cimplify init`).\n\n## Read these first\n\n- **`AGENTS.md`** at the project root \u2014 the file \u2194 `brand.X` field map for *this template's* industry, plus the architectural rules.\n- **`.claude/skills/cimplify-storefront/SKILL.md`** \u2014 the playbook for common tasks (rebrand, add a section, wire a Server Action, deploy, eject a component). Invoke it whenever you're asked to change content, palette, copy, or routing.\n\n## The two-line summary\n\n1. **Edit `lib/brand.ts`** for any visible string.\n2. **Edit `app/globals.css` `@theme` block** for any palette / radius / font change.\n\nThat covers ~95% of what merchants ask for. For anything else, follow the `cimplify-storefront` skill.\n\n## Don't do\n\n- Hardcode strings in pages or components.\n- Enable `cacheComponents: true` in `next.config.ts` \u2014 we're on Cloudflare Workers, where `'use cache'` postponed state blows past CF's 128MB zlib limit. This template stays on Next 16's \"Previous Model\" (ISR): `export const revalidate` per page + `cacheOptions: { revalidate, tags }` on SDK reads.\n- Add `'use cache'`, `cacheTag`, or `cacheLife` anywhere. Use the SDK's `cacheOptions` instead.\n- Use `unstable_cache` \u2014 it's gone in Next 16. Use SDK `cacheOptions` or `fetch.next.{revalidate,tags}`.\n- Run `bun test` (Bun's `vi` shim is incomplete) \u2014 use `bun run test:run`.\n" }, { "path": "app/about/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `About \u2014 ${brand.name}`,\n description: brand.description,\n};\n\nexport default function AboutPage() {\n const a = brand.about;\n // Title supports a single \\n for a hard line break.\n const titleParts = a.title.split("\\n");\n return (\n <article className="max-w-3xl mx-auto px-6 sm:px-8 py-16">\n <p className="text-[11px] font-mono uppercase tracking-[0.16em] text-primary mb-2">\n {a.eyebrow}\n </p>\n <h1 className="text-[clamp(2.25rem,5vw,3.5rem)] font-bold mb-6 -tracking-[0.025em] leading-tight">\n {titleParts.map((line, i) => (\n <span key={i}>\n {line}\n {i < titleParts.length - 1 && <br />}\n </span>\n ))}\n </h1>\n <div className="prose prose-lg max-w-none space-y-5 text-foreground/90 leading-relaxed">\n {a.paragraphs.map((p, i) => (\n <p key={i}>{p}</p>\n ))}\n {a.sections.map((s) => (\n <div key={s.heading}>\n <h2 className="text-2xl font-semibold mt-10 mb-3 -tracking-[0.02em]">\n {s.heading}\n </h2>\n <p>{s.body}</p>\n </div>\n ))}\n </div>\n </article>\n );\n}\n' }, { "path": "app/llms.txt/route.ts", "kind": "text", "content": 'import { getServerClient, tags, type Product } from "@cimplify/sdk/server";\nimport { brand } from "@/lib/brand";\nimport { getSiteUrl } from "@/lib/site-url";\n\nexport const revalidate = 3600;\n\nasync function buildLlmsTxt(SITE_URL: string): Promise<string> {\n const client = getServerClient();\n const [productsRes, categoriesRes, collectionsRes] = await Promise.all([\n client.catalogue.getProducts(\n { limit: 500 },\n { cacheOptions: { revalidate: 3600, tags: [tags.products()] } },\n ),\n client.catalogue.getCategories({\n cacheOptions: { revalidate: 3600, tags: [tags.categories()] },\n }),\n client.catalogue.getCollections({\n cacheOptions: { revalidate: 3600, tags: [tags.collections()] },\n }),\n ]);\n\n const products: Product[] = productsRes.ok ? productsRes.value.items : [];\n const categories = categoriesRes.ok ? categoriesRes.value : [];\n const collections = collectionsRes.ok ? collectionsRes.value : [];\n\n const lines: string[] = [];\n lines.push(`# ${brand.name}`);\n lines.push("");\n lines.push(`> ${brand.llms.summary}`);\n lines.push("");\n lines.push("## Browse");\n lines.push(`- [Home](${SITE_URL}/)`);\n lines.push(`- [Shop](${SITE_URL}/shop): Full catalogue with filter and sort.`);\n\n if (categories.length > 0) {\n lines.push("");\n lines.push("## Categories");\n for (const c of categories) {\n lines.push(\n `- [${c.name}](${SITE_URL}/categories/${c.slug})${c.description ? `: ${c.description}` : ""}`,\n );\n }\n }\n\n if (collections.length > 0) {\n lines.push("");\n lines.push("## Collections");\n for (const c of collections) {\n lines.push(\n `- [${c.name}](${SITE_URL}/collections/${c.slug})${c.description ? `: ${c.description}` : ""}`,\n );\n }\n }\n\n if (products.length > 0) {\n lines.push("");\n lines.push("## Products");\n for (const p of products) {\n const slug = p.slug ?? p.id;\n const price = `${brand.currency} ${p.default_price}`;\n const desc = p.description ? ` \u2014 ${p.description.replace(/\\s+/g, " ").slice(0, 200)}` : "";\n lines.push(`- [${p.name}](${SITE_URL}/products/${slug}) (${price})${desc}`);\n }\n }\n\n lines.push("");\n lines.push("## Information");\n lines.push(`- [About](${SITE_URL}/about)`);\n lines.push(`- [Support / FAQ](${SITE_URL}/faq)`);\n lines.push(`- [Terms of Service](${SITE_URL}/terms)`);\n lines.push(`- [Privacy Policy](${SITE_URL}/privacy)`);\n lines.push(`- [Sitemap (XML)](${SITE_URL}/sitemap.xml)`);\n lines.push("");\n lines.push("## Contact");\n lines.push(`- Email: ${brand.contact.email}`);\n lines.push(`- Phone: ${brand.contact.phone}`);\n lines.push(`- Address: ${brand.contact.address}`);\n\n return lines.join("\\n") + "\\n";\n}\n\n/**\n * `/llms.txt` \u2014 machine-readable site index for LLMs (per llmstxt.org).\n * Lets coding agents and chat assistants find products, categories, and\n * support pages without scraping HTML. Plain Markdown so it streams cheaply\n * into context windows.\n */\nexport async function GET(): Promise<Response> {\n const body = await buildLlmsTxt(await getSiteUrl());\n return new Response(body, {\n headers: {\n "Content-Type": "text/plain; charset=utf-8",\n "Cache-Control": "public, max-age=0, s-maxage=3600, stale-while-revalidate=86400",\n },\n });\n}\n' }, { "path": "app/contact/contact-form.tsx", "kind": "text", "content": `"use client";
|
|
3839
|
+
` }, { "path": "lib/site-url.ts", "kind": "text", "content": 'import { SITE_URL } from "./site.config";\n\n/** Canonical absolute URL for this storefront. */\nexport async function getSiteUrl(): Promise<string> {\n return SITE_URL;\n}\n' }, { "path": "lib/cimplify-loader.ts", "kind": "text", "content": 'import type { ImageLoader } from "next/image";\n\nimport { assetUrl, isCimplifyAsset } from "@cimplify/sdk";\n\nconst cdnBase = process.env.NEXT_PUBLIC_CIMPLIFY_CDN_URL?.trim() || undefined;\n\nconst cimplifyImageLoader: ImageLoader = ({ src, width, quality }) => {\n if (isCimplifyAsset(src, cdnBase)) {\n return assetUrl(src, {\n base: cdnBase,\n w: width,\n quality,\n format: "auto",\n });\n }\n return src;\n};\n\nexport default cimplifyImageLoader;\n' }, { "path": "lib/cart.ts", "kind": "text", "content": '"use client";\n\nimport { useCart } from "@cimplify/sdk/react";\n\n/**\n * Reactive cart count for the header pill. Subscribes to the SDK cart\n * state \u2014 updates immediately on add / remove / quantity change.\n */\nexport function useCartCount(): { count: number } {\n const { itemCount } = useCart();\n return { count: itemCount };\n}\n' }, { "path": ".gitignore", "kind": "text", "content": "node_modules\n.next\n.open-next\nout\n.env\n.env.local\n.env*.local\n.DS_Store\n*.tsbuildinfo\nnext-env.d.ts\n" }, { "path": "package.json", "kind": "text", "content": '{\n "name": "__STOREFRONT_NAME__",\n "private": true,\n "version": "0.0.0",\n "scripts": {\n "dev": "concurrently -k -n mock,next -c blue,magenta \\"cimplify-mock --seed auto --quiet\\" \\"next dev\\"",\n "dev:storefront": "next dev",\n "dev:mock": "cimplify-mock --seed auto",\n "build": "next build",\n "start": "next start",\n "typecheck": "tsc --noEmit",\n "test": "vitest",\n "test:run": "vitest run",\n "check:brand": "vitest run __tests__/brand.test.ts",\n "check:cart": "vitest run __tests__/cart-flow.test.ts",\n "check:contract": "vitest run __tests__/contract.test.ts",\n "check": "bun run typecheck && bun run test:run"\n },\n "dependencies": {\n "@cimplify/sdk": "^0.57.0",\n "next": "^16.2.6",\n "react": "^19.0.0",\n "react-dom": "^19.0.0"\n },\n "devDependencies": {\n "@tailwindcss/postcss": "^4.2.4",\n "@types/node": "^22.10.0",\n "@types/react": "^19.0.0",\n "@types/react-dom": "^19.0.0",\n "concurrently": "^9.0.0",\n "tailwindcss": "^4.2.4",\n "typescript": "^5.9.3",\n "vitest": "^4.1.5"\n }\n}\n' }, { "path": "bun.lock", "kind": "binary", "content": "ewogICJsb2NrZmlsZVZlcnNpb24iOiAxLAogICJjb25maWdWZXJzaW9uIjogMSwKICAid29ya3NwYWNlcyI6IHsKICAgICIiOiB7CiAgICAgICJuYW1lIjogIl9fU1RPUkVGUk9OVF9OQU1FX18iLAogICAgICAiZGVwZW5kZW5jaWVzIjogewogICAgICAgICJAY2ltcGxpZnkvc2RrIjogIl4wLjU0LjAiLAogICAgICAgICJuZXh0IjogIl4xNi4yLjYiLAogICAgICAgICJyZWFjdCI6ICJeMTkuMC4wIiwKICAgICAgICAicmVhY3QtZG9tIjogIl4xOS4wLjAiLAogICAgICB9LAogICAgICAiZGV2RGVwZW5kZW5jaWVzIjogewogICAgICAgICJAdGFpbHdpbmRjc3MvcG9zdGNzcyI6ICJeNC4yLjQiLAogICAgICAgICJAdHlwZXMvbm9kZSI6ICJeMjIuMTAuMCIsCiAgICAgICAgIkB0eXBlcy9yZWFjdCI6ICJeMTkuMC4wIiwKICAgICAgICAiQHR5cGVzL3JlYWN0LWRvbSI6ICJeMTkuMC4wIiwKICAgICAgICAiY29uY3VycmVudGx5IjogIl45LjAuMCIsCiAgICAgICAgInRhaWx3aW5kY3NzIjogIl40LjIuNCIsCiAgICAgICAgInR5cGVzY3JpcHQiOiAiXjUuOS4zIiwKICAgICAgICAidml0ZXN0IjogIl40LjEuNSIsCiAgICAgIH0sCiAgICB9LAogIH0sCiAgInBhY2thZ2VzIjogewogICAgIkBhbGxvYy9xdWljay1scnUiOiBbIkBhbGxvYy9xdWljay1scnVANS4yLjAiLCAiIiwge30sICJzaGE1MTItVXJjQUJCKzRiVXJGQUJ3Ymx1VElCRXJYd3Zic1UvVjdUWldmbWJnSmZia3dpQnV6aVM5Z3hkT0RVeXVpZWNmZEdRODVqZ2xNVzZqdVMzK3o1VHNLTHc9PSJdLAoKICAgICJAYmFiZWwvcnVudGltZSI6IFsiQGJhYmVsL3J1bnRpbWVANy4yOS4yIiwgIiIsIHt9LCAic2hhNTEyLUppRFNoSDQ1ektIV3lHZTRaTlZSckNqQno4Tmg5VE1tWkcxa2g0UVRLOGhDQlRXQmk4RGEraTdzMWZKdzcvbFlwTTRjY2VwU05mcXpaL1F2QUJCaTVnPT0iXSwKCiAgICAiQGJhc2UtdWkvcmVhY3QiOiBbIkBiYXNlLXVpL3JlYWN0QDEuNS4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBiYWJlbC9ydW50aW1lIjogIl43LjI5LjIiLCAiQGJhc2UtdWkvdXRpbHMiOiAiMC4yLjkiLCAiQGZsb2F0aW5nLXVpL3JlYWN0LWRvbSI6ICJeMi4xLjgiLCAiQGZsb2F0aW5nLXVpL3V0aWxzIjogIl4wLjIuMTEiLCAidXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUiOiAiXjEuNi4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBkYXRlLWZucy90eiI6ICJeMS4yLjAiLCAiQHR5cGVzL3JlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgImRhdGUtZm5zIjogIl40LjAuMCIsICJyZWFjdCI6ICJeMTcgfHwgXjE4IHx8IF4xOSIsICJyZWFjdC1kb20iOiAiXjE3IHx8IF4xOCB8fCBeMTkiIH0sICJvcHRpb25hbFBlZXJzIjogWyJAZGF0ZS1mbnMvdHoiLCAiQHR5cGVzL3JlYWN0IiwgImRhdGUtZm5zIl0gfSwgInNoYTUxMi16MWdTQWxjZWQxeVkraU0rbUhERXRJa0Q4VUkzRWJzNTJNdUJQeHZWNmY1aFJ1dGsreHZDSC93dUI3aERxRHpLOUpHNUZvTXo1bmhycXRTczF3anQxQT09Il0sCgogICAgIkBiYXNlLXVpL3V0aWxzIjogWyJAYmFzZS11aS91dGlsc0AwLjIuOSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYmFiZWwvcnVudGltZSI6ICJeNy4yOS4yIiwgIkBmbG9hdGluZy11aS91dGlscyI6ICJeMC4yLjExIiwgInJlc2VsZWN0IjogIl41LjEuMSIsICJ1c2Utc3luYy1leHRlcm5hbC1zdG9yZSI6ICJeMS42LjAiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL3JlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgInJlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgInJlYWN0LWRvbSI6ICJeMTcgfHwgXjE4IHx8IF4xOSIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkB0eXBlcy9yZWFjdCJdIH0sICJzaGE1MTIteC9QRERDWXpvcVBwanJkeWIzVmN5eWxUSTJJalVYRXRZREdpNWZvaDdLc25tTkpJSWFWd0EyR0xnREgxZHBzMUdnWGlKYkE2MGhNK0F5dVRmUXpJdnc9PSJdLAoKICAgICJAY2ltcGxpZnkvc2RrIjogWyJAY2ltcGxpZnkvc2RrQDAuNTQuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYmFzZS11aS9yZWFjdCI6ICJeMS40LjEiLCAiY2xzeCI6ICJeMi4xLjEiLCAiZGF0ZS1mbnMiOiAiXjQuMS4wIiwgImxpYnBob25lbnVtYmVyLWpzIjogIjEuMTIuNDEiLCAicmVhY3QtZGF5LXBpY2tlciI6ICJeOS4xNC4wIiwgInRhaWx3aW5kLW1lcmdlIjogIl4zLjUuMCIsICJ6b2QiOiAiXjQuNC4zIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBwYXlzdGFjay9pbmxpbmUtanMiOiAiXjIuMjIuOCIsICJtc3ciOiAiPj0yLjAuMCIsICJyZWFjdCI6ICI+PTE3LjAuMCIsICJ2aXRlc3QiOiAiPj0yLjAuMCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkBwYXlzdGFjay9pbmxpbmUtanMiLCAibXN3IiwgInJlYWN0IiwgInZpdGVzdCJdLCAiYmluIjogeyAiY2ltcGxpZnktbW9jayI6ICJkaXN0L21vY2svY2xpLm1qcyIgfSB9LCAic2hhNTEyLVlVTi9sT3FWaUhjaTF2OVVTV1d3QVd0eTI5cEVYQmRMVHVLYXJTbDhFcGFmV2g1amtkR1oxUStOZTkvYmZnVFptUjhpVFVsdEE4VTdnbFYyRm9SU2dnPT0iXSwKCiAgICAiQGRhdGUtZm5zL3R6IjogWyJAZGF0ZS1mbnMvdHpAMS40LjEiLCAiIiwge30sICJzaGE1MTItUDVMVU5odGJqNllmSTNpSmp3NUVMOWVVQUc2T2l0RDBXM2ZXUWNwUWpEUmMvUUlzTDB0Uk51TzFQY0R2UGNjV0wxZlNUWFhkRTFkcytsOTVEVi9PRkE9PSJdLAoKICAgICJAZW1uYXBpL2NvcmUiOiBbIkBlbW5hcGkvY29yZUAxLjEwLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGVtbmFwaS93YXNpLXRocmVhZHMiOiAiMS4yLjEiLCAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTIteXE2T2tKNHA4MkNBZlBsMHU5bVFlYlFIS1BKa1k3V3JJdWsyMDVjVFluWWUrazJaOFlCaDExRnJiUkcvSDZpaGlycWNhY09nbDJCSU84b3lNUUxlWHc9PSJdLAoKICAgICJAZW1uYXBpL3J1bnRpbWUiOiBbIkBlbW5hcGkvcnVudGltZUAxLjEwLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTItZXd2WWxrODZ4VW9HSTB6UVJOcS9tQysxNlIxUWVEbEtReTIxS2kzb1NZWE5nTGI0NUdWMVA2QTBNKy9zNm55Q3VORHFlNVZwYVk4NEJ6WEd3VmJ3RkE9PSJdLAoKICAgICJAZW1uYXBpL3dhc2ktdGhyZWFkcyI6IFsiQGVtbmFwaS93YXNpLXRocmVhZHNAMS4yLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTItdVRJSTdPWUYrL01lcy9NcmNJT1lwNXlPdFNNTEJXU0lvTFBwY2d3aXBvaUtibGk2azMyMnRjb0ZzeG9JSXhQRHFXMDFTUUdBZ2tvNEV6WmkyQk52Mnc9PSJdLAoKICAgICJAZXNidWlsZC9haXgtcHBjNjQiOiBbIkBlc2J1aWxkL2FpeC1wcGM2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYWl4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi0xVkNJQ1d5cGVRS2hWYkU5b1cvc0phQW1qTHhoVnFhY2RrdlBMRWp3bHR0amZ3RU5SU0NsUzhFakJ6MEt6UnlGU0NQRElrdVhXMzRKZS92azd6ZEI3UT09Il0sCgogICAgIkBlc2J1aWxkL2FuZHJvaWQtYXJtIjogWyJAZXNidWlsZC9hbmRyb2lkLWFybUAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtIiB9LCAic2hhNTEyLVFOZFFFcHM3RGZGd0UzaFhpVTRCWmVPVjY4SEh6WXdHZDBOdGhoZDN1Q2trRUtLNy9SNk1UZ00wUDdIN0ZBczVwVS9ESVdzdmlNbUVHeEVveElaK1pRPT0iXSwKCiAgICAiQGVzYnVpbGQvYW5kcm9pZC1hcm02NCI6IFsiQGVzYnVpbGQvYW5kcm9pZC1hcm02NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItYkJ5NjlwZ2ZoTUd0Q253cEMveDVRaGZ4QXovY0JnUTllbmJ0d2pmNlY5bG5QSS9oTXlUOWlXcFIxYXJtMGwza3R0VHI0TDBLU0xwS21McC9pbEtTOUE9PSJdLAoKICAgICJAZXNidWlsZC9hbmRyb2lkLXg2NCI6IFsiQGVzYnVpbGQvYW5kcm9pZC14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImFuZHJvaWQiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1UVmhkVnRRSUZ1VnBJSVIyODJidGNHQzJvR1FvU2ZaZm1CZFRpcDJhbkNhVlljcVdsWlhHY2RjS0lVa2xmWDJ3ajBKa2xOWWd6MzlPQnFoMmNxWHZjUT09Il0sCgogICAgIkBlc2J1aWxkL2Rhcndpbi1hcm02NCI6IFsiQGVzYnVpbGQvZGFyd2luLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVkxZ2lDZk00bmxIRFdFZlNja016ZVdOZFFTMzFCUUdzOS9yb3V3NlViOTF0a0s3OWFJTVRIM3E5eEh2ekg4ZDB3RHJ1NUNpMGtXQjhiM3VwL25sMTZnPT0iXSwKCiAgICAiQGVzYnVpbGQvZGFyd2luLXg2NCI6IFsiQGVzYnVpbGQvZGFyd2luLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiZGFyd2luIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItQ0pzcnk4WkdNNVZGVmV5VVlCM2NkS3BkL0g2OVBZZXo0ZUpoMVcvdDM4dnp1dGRqRWp0UDdoQjZlTEtCb09keGNBbEN0RVlIelEvUEovb1U5STR1MEE9PSJdLAoKICAgICJAZXNidWlsZC9mcmVlYnNkLWFybTY0IjogWyJAZXNidWlsZC9mcmVlYnNkLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi15WXErMzlObFRSelUyWG1vUFc0bDVJZnBsOWZxU2swbkFKWU0vVi9XVUdQRUZmZWsxZXBMSEpJa1RRTTZiQnMxc3dBcGpPNW5XZ3ZyODQzZzZUanh1UT09Il0sCgogICAgIkBlc2J1aWxkL2ZyZWVic2QteDY0IjogWyJAZXNidWlsZC9mcmVlYnNkLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiZnJlZWJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLTBGZ3ZPSjZVVU1mbHNIU1BMemRmRG5uQkJWb0NEdEJUVnluL01yV2xvVU52cS81U0ZtaDEzbDNkdmdSUGtEaWhSeGI3N1kxN01icWJDQWEyc3RyTVFRPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtYXJtIjogWyJAZXNidWlsZC9saW51eC1hcm1AMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTIta3JvNGMwUDg1R01mRllxVzRUV09wdm1GOHJGU2hiV0duckxxbHpwNFgxVE5XalJZM0pNWVVmREN0T3hQS09JWThCMFdDOEhONTFoR1A0STRoejRBYVE9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1hcm02NCI6IFsiQGVzYnVpbGQvbGludXgtYXJtNjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi0rODlVc1FUZlhkbWpJdlpTNm5Vbk9PTG9YbmtVVEI5aFI1UUFlTHJRZHpPU1dadk5TQVhBdGNSREhXdHFBVXRBbXY3Wk0xV1BPT2VTeER6enpNb2dpUT09Il0sCgogICAgIkBlc2J1aWxkL2xpbnV4LWlhMzIiOiBbIkBlc2J1aWxkL2xpbnV4LWlhMzJAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJpYTMyIiB9LCAic2hhNTEyLXlURWpvYXB5OFVQM3J2OGRCMGlwM0FmTXBSYnloU04zK2hZOG1vL2k0UVhGZUR4bWlZYkVLcDNaUmpCS2NPUDg2MlVhNGIxUERmd2x2YnV3WTdoSUdRPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtbG9vbmc2NCI6IFsiQGVzYnVpbGQvbGludXgtbG9vbmc2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItTmVxcVlrcmNHekZ3aTZDR1JHTk1PaldHR1NZT3Bxd0NqUzlmdmFVbFg1czN6d090bjFxd2cxczJpRTJzdkJlNFEvWU9HMXE2ODc1bGNBb1FLL0Y0VkE9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1taXBzNjRlbCI6IFsiQGVzYnVpbGQvbGludXgtbWlwczY0ZWxAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJub25lIiB9LCAic2hhNTEyLUljdlRsRjlkdExyZkwvTThXZ05JL3FKWUJFTlAzZWtnc0hiWVVJekV6cTVYSnp6VkVWL2ZYWTlXRlBmRUVYbXUzY2sycUpQOExHL3AzUThmN1pjMlhnPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtcHBjNjQiOiBbIkBlc2J1aWxkL2xpbnV4LXBwYzY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAicHBjNjQiIH0sICJzaGE1MTItSE95MGFMVEpUVnRvVGVHWmg0SFNYYU82TTk1cXU0azVsSmNINGd4djU2aWF5Y2Z6MVM4R08vNUpoNlg0WTFZaUkwaDdjUnlMaStIaXhNUis4OHN3YWc9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1yaXNjdjY0IjogWyJAZXNidWlsZC9saW51eC1yaXNjdjY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1pOEpVREF1ZnB6OWpPem80eUlTaENUY1h6UzA3dkVnV3p5WDNOSDJHN0xFRlZnckxFaGp3TDNhakZFNGZaSTNJNFpnaU03SkgzR1E3UmVPYlJPdlNVQT09Il0sCgogICAgIkBlc2J1aWxkL2xpbnV4LXMzOTB4IjogWyJAZXNidWlsZC9saW51eC1zMzkweEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogInMzOTB4IiB9LCAic2hhNTEyLWpGbnUrNlViTGx6SWpQUXBXQ05oNVF0cmNOZk1MamdJYXZud1BRQWZvR3g0cTE3b2NPVTlNc1EyUVZ2Rnh3UW9XcFpUOER2VExvb1R2bU9RWGtPNTFnPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgteDY0IjogWyJAZXNidWlsZC9saW51eC14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItNmUwY3ZYd3pPblZXSkhxK21za1A4RE5TcktCcjFiVUxCdm5GTHBjMUtZK2QraXJaU2daMDJUR3NlNUZzYWZLUzVqZzJlNHBidks2VFBYYUYvQTYrQ0E9PSJdLAoKICAgICJAZXNidWlsZC9uZXRic2QtYXJtNjQiOiBbIkBlc2J1aWxkL25ldGJzZC1hcm02NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibm9uZSIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItdlVua0JZeFpXNGhML2llOTFoU3FhU05qdWxPbllYRTFWU0x1c252SGcydTNqZXdKQnozWXpCOStvQ3c4REFCZVZxWkdnOTR0OXR5WkZvSG1hOGdXWlE9PSJdLAoKICAgICJAZXNidWlsZC9uZXRic2QteDY0IjogWyJAZXNidWlsZC9uZXRic2QteDY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJub25lIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItWEFnOHBJUW41Q3poT0I4b2RJY0FtNDJRc09mYTk4U0JlS1VkbzR4YThPdlg4TGJNWnFFdGdlV0U5UC9XeHQ3TWxHMlFxdmpHdGhzK25xNDhUclVpS3c9PSJdLAoKICAgICJAZXNidWlsZC9vcGVuYnNkLWFybTY0IjogWyJAZXNidWlsZC9vcGVuYnNkLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJvcGVuYnNkIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1DdDJXY0ZFQU5sRkR0cDFuVkFYU05CUER4eVUrajcrdElkLy9pSFhVMmYvbE41QW1PNHpMeWhEY3BSNUN6MXIwOG1WeHp0M0pweXQ0UG1YUTFPNis3QT09Il0sCgogICAgIkBlc2J1aWxkL29wZW5ic2QteDY0IjogWyJAZXNidWlsZC9vcGVuYnNkLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAib3BlbmJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLXhBR0doeU9ROU90bTFYdThOVDFpZkdMbkE2TTNzSnhaNml4eWxiK3ZJVVZ6dnZkNkdPQUxwd1FyWXJ0bFBvdU1xZC92U2JnZWh6NkhhVms0KzdBZmh3PT0iXSwKCiAgICAiQGVzYnVpbGQvc3Vub3MteDY0IjogWyJAZXNidWlsZC9zdW5vcy14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogInN1bm9zIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItTXcrdHp5NHBwNndaRUswK0x3cjc2cFdManJ0am1KeVVCMjN0SEtxRURQNzRSM3E5NWx1WS9iWHFYWmVZbDROWWx2d09xb1JLbEluUWlhbGdDS3k2N1E9PSJdLAoKICAgICJAZXNidWlsZC93aW4zMi1hcm02NCI6IFsiQGVzYnVpbGQvd2luMzItYXJtNjRAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1BVlVQNDI4VlFUU2RkZ3V6OWRPOW5nYitFNWFTY3lnN25PZUpEckYxSFBZdTU1NWdtemEzYkRHTVBobVZYTDhzdkRTb3FQQ3NDUGpiMjY1eUcva0xLUT09Il0sCgogICAgIkBlc2J1aWxkL3dpbjMyLWlhMzIiOiBbIkBlc2J1aWxkL3dpbjMyLWlhMzJAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJpYTMyIiB9LCAic2hhNTEyLWkxc1crMWkrb1d2UXpTZ2ZSY3h4RzJrNEk5bjNPOU5ScXk4VSt1dWdhVDJEeTdrTE85WTd3STcyaGFPYWh4Y2VNWDhoWkF6Z0dvdTFGaG5kUmxkeFJnPT0iXSwKCiAgICAiQGVzYnVpbGQvd2luMzIteDY0IjogWyJAZXNidWlsZC93aW4zMi14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItbk9UMnZaTnc2aEorejQzb1AxU1BlYS9HLzZBYk42WCtiR05oTnVxOE50Ukh5NHdzTWh3NzY1SUtMTm1uamVrN0d2aldCWVE4UTVWQm9ZVEZnOXkxVVE9PSJdLAoKICAgICJAZmxvYXRpbmctdWkvY29yZSI6IFsiQGZsb2F0aW5nLXVpL2NvcmVAMS43LjUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGZsb2F0aW5nLXVpL3V0aWxzIjogIl4wLjIuMTEiIH0gfSwgInNoYTUxMi0xSWg0V1RXeXcwK2xLeUZNY0JIR2JiNVU1RnR1SEp1dWpveXlyNXpUYVdTNUVZTWVUNkpiMkF1RGVmdHNDc0V1Y2hPK21NMmlqNStxOWNyaHlkekxoUT09Il0sCgogICAgIkBmbG9hdGluZy11aS9kb20iOiBbIkBmbG9hdGluZy11aS9kb21AMS43LjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGZsb2F0aW5nLXVpL2NvcmUiOiAiXjEuNy41IiwgIkBmbG9hdGluZy11aS91dGlscyI6ICJeMC4yLjExIiB9IH0sICJzaGE1MTItOWdaU0FJNVhNMzY4ODBQUE1tLy85ZGZpRW5nWW9DNkFtMml6RVMxRkY0MDZZRnNqdnlCTW1lSjJnNFNBanUzeFd3dHV5bk5SRkwyczloZ3hwTEk1U1E9PSJdLAoKICAgICJAZmxvYXRpbmctdWkvcmVhY3QtZG9tIjogWyJAZmxvYXRpbmctdWkvcmVhY3QtZG9tQDIuMS44IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBmbG9hdGluZy11aS9kb20iOiAiXjEuNy42IiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgInJlYWN0IjogIj49MTYuOC4wIiwgInJlYWN0LWRvbSI6ICI+PTE2LjguMCIgfSB9LCAic2hhNTEyLWNDNTJiSHdNL24vQ3hTODdGSDB5V2RuZ0VacmpkdExXL3FWcnVvNjhxZytwcks3WlE0WUdkdXQyR3lEVnBvR2VBWWUvaDg5OXJWZU9WbTZPaTQwazJBPT0iXSwKCiAgICAiQGZsb2F0aW5nLXVpL3V0aWxzIjogWyJAZmxvYXRpbmctdWkvdXRpbHNAMC4yLjExIiwgIiIsIHt9LCAic2hhNTEyLVJpQi95SWg3OHBjSXhsNmxMTUcwQ2dCWEFaMlkwZVZIcU1QWXVndSs5VTBBZVQ2WUJlaUpwZjdsYmRKTkl1Z0ZQNVNJandOUmdvNERoUjFReGkyNkdnPT0iXSwKCiAgICAiQGltZy9jb2xvdXIiOiBbIkBpbWcvY29sb3VyQDEuMS4wIiwgIiIsIHt9LCAic2hhNTEyLVRkNzZxN2o1N28vdExWZGdTNzQ2Y1lBUmZTeXhrOGlFZlJ4ZXdMOWg0T016WWhiVzRUQWNwcGwwbVQ0ZXlxWGRkaDZML2p3b003NW1vN2l4YS9wQ2VRPT0iXSwKCiAgICAiQGltZy9zaGFycC1kYXJ3aW4tYXJtNjQiOiBbIkBpbWcvc2hhcnAtZGFyd2luLWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiAiMS4yLjQiIH0sICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLWltdFEzV01KWGJNWTRmeGIvTmRwNkhCVE5WdFdDVUkwV2RvYnloZUdmNSthZDZ4WDhWSURPOHUyeEU0cWMvZnIwOENLRy83ZERzZUZ0bjZNNmcvcjN3PT0iXSwKCiAgICAiQGltZy9zaGFycC1kYXJ3aW4teDY0IjogWyJAaW1nL3NoYXJwLWRhcndpbi14NjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWRhcndpbi14NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1ZTkVGQUYvNEtRL1BlVzBOK3IrYVZWc29JWTAvcXh4aWtGMlNXZHArTlJrbU1CN3k5TEJaQVZxUTR5aEdDbS9IM0gyNzBPU3lrcW1RTUtMQmhCSkRFdz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjRAMS4yLjQiLCAiIiwgeyAib3MiOiAiZGFyd2luIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi16cWpqbzdSYXRGZkZvUDBNa1E1MWpmdUZaQm5WRTJwUmlheWRLSjFHL3JIWnZuc3JIQU9jUUFMSWk5c0E1Y281eGVuUWRUdWdDdnRiMWN1Zjc4VmY0Zz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4teDY0IjogWyJAaW1nL3NoYXJwLWxpYnZpcHMtZGFyd2luLXg2NEAxLjIuNCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi0xSU9kNXhmVmhsR3dYK3pYdjJOOTNrMHlNT052VWxBTnlsYkp3MWVUYWg4Sy9KdHBpMTVLQytXU2lhWC9uQm1ibTJIeFJNMWdaMG5TZGpTc3JaYkdLZz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm0iOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm1AMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybSIgfSwgInNoYTUxMi1iRkk3eGNLRkVMZGlOQ1ZvdjhlNDRJYTR1MmJ5QStsM1h0c0FqK1E4dGZDd082QlE4aURvallkdm9QTXFzS0RrdW9PbytYNkhaQTBzMHExMUFOTVE4QT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm02NCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybTY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1leGNqWDhEZnNJY0oxMHgxS3pyNFJjV2UxZWRDOVBxdURSUlB4M1lWQ3ZRditVNXA3WWluMnMzMmZ0emlrWG9qYjFQSUZjLzlNdDI4L3kraVJrbGtydz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1wcGM2NCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi1GTXV2R2lqTERZRzZsVytiL1V2eWlsVVd1NUF5dSszcjJkMVM4bm90aUdDSXlZVS83NmVpZzFVZk1ta1o3dndnT3J6S3psUWJGU3VRZmdtN0dZVVBwQT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1yaXNjdjY0IjogWyJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgtcmlzY3Y2NEAxLjIuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1vVkRiY1I0elVDMGNlODJ0ZXViU20reDZFVGl4dEtaQmgvcWJSRUlPY0kzY1VMekR5YjE4U3IvV2N5eDdOUlFlUXpPaUhUTmJaRkYxVXdQUzJzY3lHQT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1zMzkweCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXMzOTB4QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJzMzkweCIgfSwgInNoYTUxMi1xbXA5VnJ6Z1BnTW9HWnlQdnJRSHFrMDJ1eWpBMC9RclRPMjZUcWs2bDRaVjBNUFdJVzZMVGtxT0lvditKMXlFdTdNYkZRYURwd2R3SktoYkp2dVJ4UT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjRAMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi10SnhpaUxzbUhjOUF4MWJ6M29hT1lCVVJUWEdJUkRPREJxaHZlVkhvbnJISjkvK2s4OXFiTGwwYmNKbnMrZTR0NHJ2YU5CeGFFWnNGdFNmQWRxdVBydz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjRAMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLUZWUUh1d3gxSUl1Tm93OVFBYllVekorRW44S2NWbTlMazUrdUdVUUpIYVptTUVDWm1PbGl4OUhuSDduMVRSa1hNUzBwR3hJSm9rSVZCOVN1cVpHR1h3PT0iXSwKCiAgICAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4bXVzbC14NjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wteDY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItK0xweUJrN0w0NFpJWHd6L1ZZZmdsYVgvb2t4ZXpFU2M2VXhEU295bzJLczZKeGM0WTdzR2pwZ1U5czRQTWdxZ2pqMWdaQ3lsVGllTmFtcUExTUY3RGc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4LWFybSI6IFsiQGltZy9zaGFycC1saW51eC1hcm1AMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybSI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItOWRMcXN2d3RnMXV1WEJHWktzeGVtOTU5NSt1anYwc0o2Vmk4d2NUQU5TRnB3Vi9HT05hdDVlQ2t6UW8vMU82elJJa2gwbS84KzVCanJScjdqRFVTWnc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4LWFybTY0IjogWyJAaW1nL3NoYXJwLWxpbnV4LWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm02NCI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1iS1F6YUpSWS9ia1BPWHlLeDVFVnVwN3FrYW9qRUNHNk5MWXN3Z2t0T1pqYVhlY1NBZUNXaVp3d2lGZjMvWStPMUhyYXVpRTNGVnNHeEZnOGMyNHJaZz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGludXgtcHBjNjQiOiBbIkBpbWcvc2hhcnAtbGludXgtcHBjNjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0IjogIjEuMi40IiB9LCAib3MiOiAibGludXgiLCAiY3B1IjogInBwYzY0IiB9LCAic2hhNTEyLTd6em53TmFxVzZZdHNmckdHREE2QlJrSVNLQUFFMUpvMFFkcE5ZWE5NSHUyKzBkVHJQZmxUTE5rcGM4bDdNVVA1TTE2WkpjVXZ5c1ZXV3JNZWZacXVBPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eC1yaXNjdjY0IjogWyJAaW1nL3NoYXJwLWxpbnV4LXJpc2N2NjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXJpc2N2NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi01MWdKdUxQVEthN3BpWVBhVnM4R21CeW83L1U3LzdUWk9xK2NuWEpJSFpLYXZJUkhBUDc3ZTNOMkhFbDNkZ2lxZEQvdzB5VWZpSm5JSTc3UHVEREZkdz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGludXgtczM5MHgiOiBbIkBpbWcvc2hhcnAtbGludXgtczM5MHhAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXMzOTB4IjogIjEuMi40IiB9LCAib3MiOiAibGludXgiLCAiY3B1IjogInMzOTB4IiB9LCAic2hhNTEyLW5RdENrMFBkS2ZobzNlQzVNcmJRb2lnSjJnZDFDZ2RkVU1rYWJVaityQmV2czh0WjJjVUxPeDQ2RTdveVgrMDRXR2ZBQmdJd21NQzBWcWllVGlSNGpnPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eC14NjQiOiBbIkBpbWcvc2hhcnAtbGludXgteDY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLU1FemQ4SFBLeFZ4VmVud0FhK0pSUHdFQzdRRmpvUFd1UzVOWm5CdDZCM3B1N0VHMkdlMGlkMW9MSFpwUEpkbjNPUUsrQlFEaXc5elN0aUhCVEpRUVFRPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eG11c2wtYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGludXhtdXNsLWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItZnBySlI2R3RSc010Nkt5ZnE0NElzQ2hWWmVHTjk3Z1REMzMxd2VSMWV4MWMxcnlwREVBQk42VG0yeGExd0U2bFliNURkRW5rMDNOWlBxQTdJZDIxeWc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4bXVzbC14NjQiOiBbIkBpbWcvc2hhcnAtbGludXhtdXNsLXg2NEAwLjM0LjUiLCAiIiwgeyAib3B0aW9uYWxEZXBlbmRlbmNpZXMiOiB7ICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXhtdXNsLXg2NCI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSmc4d05UMU1Vekl2aEJGeFZpcXJFaFdER3pxeW1vM3NWN3o3WnNhV2JaTkRMWFJKWm9SR3JqdWxwNjBZWXRWNHdmWThWSUtjV2lkam9qbExjV3JkOFE9PSJdLAoKICAgICJAaW1nL3NoYXJwLXdhc20zMiI6IFsiQGltZy9zaGFycC13YXNtMzJAMC4zNC41IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvcnVudGltZSI6ICJeMS43LjAiIH0sICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1PZFdURWlWa1kyUEh3cWtiQkk4ZnJGeFFRRmVrSGFTU2tVSUprd3pjbFdaZTY0TzFYNFVsVWpxcXFMYVBiVXBNT1FrNkZCdS9IdGxHWE5ibElzMGh1dz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzItYXJtNjQiOiBbIkBpbWcvc2hhcnAtd2luMzItYXJtNjRAMC4zNC41IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1XUTNBZ1dDV1lTYjJ5dCtJRzhtbkM2SmRrOVdoczdPMGd4cGhibHNMdmRoU3BTVHRtdTY5WkcxR2tiNk51dnhzTkFDd2lQVjZjTlNaTnp0MEtQc3c3Zz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzItaWEzMiI6IFsiQGltZy9zaGFycC13aW4zMi1pYTMyQDAuMzQuNSIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAiaWEzMiIgfSwgInNoYTUxMi1GVjltLzdObWVDbVNIREQ1ajQrNHBOSThDcDNhVytKdkxvWGNUVW8wSXF5alNmQVpKOGRJVW1pangxcWFKc0lpVStIb3N3NnhNNUtpakFXUkpDU2dOZz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzIteDY0IjogWyJAaW1nL3NoYXJwLXdpbjMyLXg2NEAwLjM0LjUiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi0rMjlZTXNxWTIvOWVGRWlXOTNlcVdudUxjV2N1Zm93WGV3d1NOSVQ2VXdaZFVVQ3JNM29Gak1XSC9aNi9UTW1iNGhsRmVubWZBVmJwV2V1cDJqcnlDdz09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogWyJAanJpZGdld2VsbC9nZW4tbWFwcGluZ0AwLjMuMTMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjIjogIl4xLjUuMCIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjQiIH0gfSwgInNoYTUxMi0ya2t0LzduaUo2TWdFUHhGMGJZZFE2ZXRaYUErZlF2RGNMS2NraHkxeUlRT3phb0tqQkJqU2o2My9hTFZqWUUzcWhSdDVkdk0rdVV5ZkNnNlVLQ0JiQT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3JlbWFwcGluZyI6IFsiQGpyaWRnZXdlbGwvcmVtYXBwaW5nQDIuMy41IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogIl4wLjMuNSIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjQiIH0gfSwgInNoYTUxMi1MSTl1LytsYVlHNERzMVRES1NKVzJZUHJJbGNWWU93aTJmVUM2eEI0M2x1ZUNqZ3hWNGxmZk9DWkN0WUZpSDZUTk9YK3RRS1h4OTdUNElLSGJoeUhFUT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3Jlc29sdmUtdXJpIjogWyJAanJpZGdld2VsbC9yZXNvbHZlLXVyaUAzLjEuMiIsICIiLCB7fSwgInNoYTUxMi1iUklTZ0NJalAyMC90YldTUFdNRWk1NFFWUFJaRXhrdUQ5bEpMK1VJeFVLdHdWSkE4d1cxVHJiMWpNczFSRlhvMUNCVE5aLzVocEM5UXZtS1dkb3BLdz09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3NvdXJjZS1tYXAiOiBbIkBqcmlkZ2V3ZWxsL3NvdXJjZS1tYXBAMC4zLjExIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogIl4wLjMuNSIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjUiIH0gfSwgInNoYTUxMi1aTXAxVjhaRmNQRzVkSVduUUxyM05TSTFNaUNVN1VFVGRTL0EwRzhWL1hXSHZKdjNac0ZxdXRKbjFZNVJQbUFQWDZGM0JpRTM5N09xdmVVLzlOQ3VJQT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3NvdXJjZW1hcC1jb2RlYyI6IFsiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjQDEuNS41IiwgIiIsIHt9LCAic2hhNTEyLWNZUTkzMTBncnF4dWVXYmwrV3VJVUlhaVVhRGNqN1dPcTVmVmhFbGpOVmdSZk9VaFk5ZnkyelR2Zm9xV3NuZWJoOFNsNzBWU2NGYklDdkpuTEtCME9nPT0iXSwKCiAgICAiQGpyaWRnZXdlbGwvdHJhY2UtbWFwcGluZyI6IFsiQGpyaWRnZXdlbGwvdHJhY2UtbWFwcGluZ0AwLjMuMzEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvcmVzb2x2ZS11cmkiOiAiXjMuMS4wIiwgIkBqcmlkZ2V3ZWxsL3NvdXJjZW1hcC1jb2RlYyI6ICJeMS40LjE0IiB9IH0sICJzaGE1MTItenpOUitTZFFTREp6Yzhqb2FlUDhRUW9DUXI4TnVZeDJkSUl5dGwxUWVCRVpISjl1VzZoZWJzcllnYno4aEp3VVFhbzNUV0NNdG1mVjhOdTF0d09MQXc9PSJdLAoKICAgICJAbmFwaS1ycy93YXNtLXJ1bnRpbWUiOiBbIkBuYXBpLXJzL3dhc20tcnVudGltZUAxLjEuNCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAdHlieXMvd2FzbS11dGlsIjogIl4wLjEwLjEiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQGVtbmFwaS9jb3JlIjogIl4xLjcuMSIsICJAZW1uYXBpL3J1bnRpbWUiOiAiXjEuNy4xIiB9IH0sICJzaGE1MTItM05RTk5nQTFZU2xKYi9rTUgxaWxkQVNQOUhXNy83a1luUkkyc3pXSmFvZmFTMWhXbWJHSTRIK2QzKzIyYUd6WFhOOUlKK24rR2lGVmNHaXBKUDE4b3c9PSJdLAoKICAgICJAbmV4dC9lbnYiOiBbIkBuZXh0L2VudkAxNi4yLjYiLCAiIiwge30sICJzaGE1MTItZ2Q4SG9ITjR1Zmo3M1dtUjNKbVZvbHJwSlI0N0lMSzZMb3VQNXhFbFBnbGFWeGlyNmUxYTdWenZUdkRXa09vUFhUOXJra1R6eUN4QnU0eWVaZlp3Y3c9PSJdLAoKICAgICJAbmV4dC9zd2MtZGFyd2luLWFybTY0IjogWyJAbmV4dC9zd2MtZGFyd2luLWFybTY0QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVpKR2trY05mWWdyck1rcU9kWjd6b0xhMVRPeTBxcGNNZmsvejRNaC9GS1V6NDBnVk8rSE5RV3FtTHhmNjdaNVdCNjREUnAwZGhFYnlIZmVsKzZzSlVnPT0iXSwKCiAgICAiQG5leHQvc3djLWRhcndpbi14NjQiOiBbIkBuZXh0L3N3Yy1kYXJ3aW4teDY0QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi12L1lMQkhJWTEzMkNlZDNwdUJKN1lKS3cxbHFzQ3JnY05vMmFSSmxDRXlRcnJDZVJKbHZHbG5teGhQeE5RSTNLRTNOMURONXI5VFBOUHZrYTNucTVSUT09Il0sCgogICAgIkBuZXh0L3N3Yy1saW51eC1hcm02NC1nbnUiOiBbIkBuZXh0L3N3Yy1saW51eC1hcm02NC1nbnVAMTYuMi42IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1SUE92cWxZQmJjUWprejlWUVFEWjJUMmJBUklqWFpWMUtGbHQrVjJNcjZTVy9lNEk5ZmNLc2FBMGhkeWYyRkhvVGxzVjJ4bkJkNVk5MTJyUC8xQ2U2dz09Il0sCgogICAgIkBuZXh0L3N3Yy1saW51eC1hcm02NC1tdXNsIjogWyJAbmV4dC9zd2MtbGludXgtYXJtNjQtbXVzbEAxNi4yLjYiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVVSVVR1MStkTWt4SnNQRmdtK09lRXZxOXdmNXN1ancwRXZnWXk4MFRER0hUU0xUbklIZXFiMEV1OEEzc0M5NUlSZ2plalFMK2tDNG13KzR5UHhpQVhBPT0iXSwKCiAgICAiQG5leHQvc3djLWxpbnV4LXg2NC1nbnUiOiBbIkBuZXh0L3N3Yy1saW51eC14NjQtZ251QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLURPajE4Mm1QVjhHM1VrcmF5TG9SRU01WUVZSStEazV3djdPeDl4bDFmRmliQUVMRXNGRDBsRFBmSEllSUxsdXRNTWZkeWhsellQRUxHM3BldUthdXJ3PT0iXSwKCiAgICAiQG5leHQvc3djLWxpbnV4LXg2NC1tdXNsIjogWyJAbmV4dC9zd2MtbGludXgteDY0LW11c2xAMTYuMi42IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSEtRNVNQL1YvdWI3M1V2RjduL3plSmx4azJrTG10TDdXenJnNFdmbWtqbU5vczVvbkoydEt1N3laT1BkTDE4QTZTdmZuM21heDI5eW0rcnk3TmtLNGc9PSJdLAoKICAgICJAbmV4dC9zd2Mtd2luMzItYXJtNjQtbXN2YyI6IFsiQG5leHQvc3djLXdpbjMyLWFybTY0LW1zdmNAMTYuMi42IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1MWlhwVGxQeVM1djdIaFNtbnZzTEdQM2lJWWdZT0JuYzhyOEFybFQ1NXNHSFY4OWJSMkhsRGRCaldRK1BZNlNKTW1rOFR1VkdGdXhhbG5QM2svMER3Zz09Il0sCgogICAgIkBuZXh0L3N3Yy13aW4zMi14NjQtbXN2YyI6IFsiQG5leHQvc3djLXdpbjMyLXg2NC1tc3ZjQDE2LjIuNiIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLUYwKzRpMGg5SjZDNGVFM0VBUFdzb0NrN1VXL2Riek9qeXp4WTBxbkRVT1lGdTZGRm1kWjZsOTcvWGRWMy9OejNWWXlPN1VXanlFSlVYa0dxY29YZk1BPT0iXSwKCiAgICAiQG94Yy1wcm9qZWN0L3R5cGVzIjogWyJAb3hjLXByb2plY3QvdHlwZXNAMC4xMzAuMCIsICIiLCB7fSwgInNoYTUxMi1pYkQydXN4OUpSdTdmNXB1MnRNS01JNGNwQTROZ1hKUW9ZUlA0cFE3UHhtbjFsNmsvNTNxV3RRV1pheWhZeTNYNFFaa3Q5ME90K21KRWFlWG91aW82UT09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWFuZHJvaWQtYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLWFuZHJvaWQtYXJtNjRAMS4wLjEiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItZkpJM0kwcjNDM09qL3pkQkNwYUNtQlJaWWYwN3hwYXE0eUNmRERvU0ZtK2JlV056YklsMjZwdVc4UnJhVWR1Z29Kdy85NXplck5PbjZqYXNBaHpTbWc9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1kYXJ3aW4tYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLWRhcndpbi1hcm02NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLWNLbkFoV0VzVjdUUGNBLzVFQXRlRHA2S2NKWkJRMkcrQnFFN3pheU1NaTdrTXZ3UnNidjdXVDlhT25uMFdObDRTS0VJZjQzdmpTMzFpVVB1ODBuelhnPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NCI6IFsiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1ZS3JWd1FqSVJCUG8rNUcvdTAzd0dqYmR5NHE3cHl6Q2U5M0RLOVZKN3prVm1lZzhMSjdHYmdzaUhXZFI0eFNvZTRDQVhSRDdCY2pnYnRyNjRia1hOZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWZyZWVic2QteDY0IjogWyJAcm9sbGRvd24vYmluZGluZy1mcmVlYnNkLXg2NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItei9vQnNSRW80NlNzRnFCd1l0RmUwa3BKZUJpakFUNDhPL1dYTEk0c3VpQ0xCa3IwM1JUdFRKTUN6U2REZDJ6bmxoOFZKaXpMMDlYVmtRZ2s4SVpvbnc9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmQDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItaWs4cTdHTTExenh2WXhGYzJQZURjVDZUQnZoQ1FNYVV4ZnBoL001bDlzS3VUcy9TamczTCtCeXcwRjd3MFpWTEJabXgzMFArZ0cwRUN6ek4rTUZjbVE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1nbnUiOiBbIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LWFybTY0LWdudUAxLjAuMSIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItUW9TeDJFa3lycmRaNmtjeUU4c3RxWjYydDBZcmE4RnM1aWE5bE94SnJoNlRNUUpLN2dRS21zY2RUSGY3cE9YS1JFS3JWd090SmNRRzNxVlNmYzg2NkE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsQDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi11d053RnB3S2VOaVphd2ZBV0JnZzBWSXp0UFRWM2loaGgxdlYzMzRoOWl2bk5Mb3J4blFNVTZGejh3RzFaYjRRaDlMQzEvTWtjeVQzWWxEWEczUnNnZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXBwYzY0LWdudSI6IFsiQHJvbGxkb3duL2JpbmRpbmctbGludXgtcHBjNjQtZ251QDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi16WTFidWw3T1dyN0RGQmlKKyt3b2ZYdm5yOEI0NWNlM1FzUVVoS3JJaFhzeWdBaDdiVGt3eWVNMWJpMWEyZzVDL3lDL044VFp5R0RFb01mbS9sOW1wZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXMzOTB4LWdudSI6IFsiQHJvbGxkb3duL2JpbmRpbmctbGludXgtczM5MHgtZ251QDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJzMzkweCIgfSwgInNoYTUxMi0wZnJsc1QvZjRGdDZJN1NNRVNUS25GM2Nac2RpY1FuMWRDTWtGL2pUOXdETEUrZ0dvaVFmdjFubVQ5ZStzN3MvZmVrdnZ5NnRaTTJqSHZJMnRrYkpEUT09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1nbnUiOiBbIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1nbnVAMS4wLjEiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1YQUJWbUdwOVRnMFdzcFRWdndkdVRjNGZwcXk2Sm5BVXJTUWU2T3V5cUQvMDNuSTdyME85T1dVa01Jd0ZyaktBSXFvbHZxb0E0WnJKcHBnd0UwR3htdz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1tdXNsIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC14NjQtbXVzbEAxLjAuMSIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLWJWNGZ6c3d1elZjS0Q5MG8vVk02UXFLeG54bERxMGcyQklTRExOVm14cm5ocHYxRERieVBoQ0lqWWZ2ellMVitNdmtLS25RdDJRNkFPODZTRUJVTFVRPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctb3Blbmhhcm1vbnktYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLW9wZW5oYXJtb255LWFybTY0QDEuMC4xIiwgIiIsIHsgIm9zIjogIm5vbmUiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLS9NaDBaaHEzT1A3ZlZzMGtjUUhaUDZsWkV0aE1HVGFTZjhVQlFZU0ZFWkRXR1hYbEVDK25KNkVxZW5hSzJ0NExCWE1lM0ErSy9HMkJWWFhkdE9yNFBRPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctd2FzbTMyLXdhc2kiOiBbIkByb2xsZG93bi9iaW5kaW5nLXdhc20zMi13YXNpQDEuMC4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvY29yZSI6ICIxLjEwLjAiLCAiQGVtbmFwaS9ydW50aW1lIjogIjEuMTAuMCIsICJAbmFwaS1ycy93YXNtLXJ1bnRpbWUiOiAiXjEuMS40IiB9LCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItKzF4YzlYNDVsOHVmc0JBbTZHanZ4MnFEUklZOWxUVnQwY2dXTmNKKzFnZGhYdmtieGVQQTYweVJUd1NUdVhMMDlDTWh5Sm1qcFY3RTNOb3l4YnFGUVE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjIjogWyJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjQDEuMC4xIiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi0xRCtVcVpkZm51UitKeTFHZ01Kd2k4NWJENDBIMjF1Tm1PUFJXUWh3NG9SU3VvbFovQjVyaXhaNDVESzJLWE9UQ3ZtVkNlY2F1V2dFaGJ3OGJJN3RPdz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLXdpbjMyLXg2NC1tc3ZjIjogWyJAcm9sbGRvd24vYmluZGluZy13aW4zMi14NjQtbXN2Y0AxLjAuMSIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLUlOQXljYVd1aGxPSzN3azRtUkhHc2Rnd1lXbWQ5Y0NoZFBkRTlid1dteTZybjlWcVZOWU5GR2hPZFhyb2ZYVXh3SEluY1NpUE5iOHRObThrbkRWSWVRPT0iXSwKCiAgICAiQHJvbGxkb3duL3BsdWdpbnV0aWxzIjogWyJAcm9sbGRvd24vcGx1Z2ludXRpbHNAMS4wLjEiLCAiIiwge30sICJzaGE1MTItMmo5Ykd0NUpoOGhqK3ZQdGd6UHRsNzJqMHlSeEhBeXVtb282VE5mQWpzTEIwNFV0cFN2UGJQY0RjQk14ejduKzlDWUIwYzFHeFFGeFlSZzJqaW1xR3c9PSJdLAoKICAgICJAc3RhbmRhcmQtc2NoZW1hL3NwZWMiOiBbIkBzdGFuZGFyZC1zY2hlbWEvc3BlY0AxLjEuMCIsICIiLCB7fSwgInNoYTUxMi1sMmFGeTVqQUxobmlHNUhncXJENmpYTGkvclVXckt2cU4vcUp4NnlvSnNnS2hibFZkK2lxcVU0UkNYYXZtL2pQaXR5RG81VEN2S01ucGpLbk9yaXkwdz09Il0sCgogICAgIkBzd2MvaGVscGVycyI6IFsiQHN3Yy9oZWxwZXJzQDAuNS4xNSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi44LjAiIH0gfSwgInNoYTUxMi1KUTVUdU1pNDVPd2k0L0JJTUFKQm9TUW9PSnUxMm9Pay9nQURxbGNVTDlKRWRIQjh2eWpVU3N4cWVOWG5tWEhqWUtNaTJXY1l0ZXpHRUVocVVJL0UyZz09Il0sCgogICAgIkB0YWJieV9haS9oaWpyaS1jb252ZXJ0ZXIiOiBbIkB0YWJieV9haS9oaWpyaS1jb252ZXJ0ZXJAMS4wLjUiLCAiIiwge30sICJzaGE1MTItcjViQ2xLcmNJdXNEb28wNDlkU0w4Q2F3bkhSNm1SZER3aGxRdUlnWlJOdHk2OHEweDhrM0xmMUJ0UEFNeFJmL0dnbkhCbklPNHVqZDMrR1FkTFd6eFE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvbm9kZSI6IFsiQHRhaWx3aW5kY3NzL25vZGVANC4zLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvcmVtYXBwaW5nIjogIl4yLjMuNSIsICJlbmhhbmNlZC1yZXNvbHZlIjogIl41LjIxLjAiLCAiaml0aSI6ICJeMi42LjEiLCAibGlnaHRuaW5nY3NzIjogIjEuMzIuMCIsICJtYWdpYy1zdHJpbmciOiAiXjAuMzAuMjEiLCAic291cmNlLW1hcC1qcyI6ICJeMS4yLjEiLCAidGFpbHdpbmRjc3MiOiAiNC4zLjAiIH0gfSwgInNoYTUxMi1hRmI0Z1VoRk9nZGg5QVhvNEl6QkVPekJra0F4bTlWaWd3REpuTUlZdjNsY2ZYQ0pWZXNOZmJFYUJsNEJOZ1ZSeWlkOTJBbWR2aXF3QlVCUktTZVkzZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZSI6IFsiQHRhaWx3aW5kY3NzL294aWRlQDQuMy4wIiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQHRhaWx3aW5kY3NzL294aWRlLWFuZHJvaWQtYXJtNjQiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtZGFyd2luLXg2NCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtZnJlZWJzZC14NjQiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybS1nbnVlYWJpaGYiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybTY0LWdudSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtbXVzbCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LWdudSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LW11c2wiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLXdhc20zMi13YXNpIjogIjQuMy4wIiwgIkB0YWlsd2luZGNzcy9veGlkZS13aW4zMi1hcm02NC1tc3ZjIjogIjQuMy4wIiwgIkB0YWlsd2luZGNzcy9veGlkZS13aW4zMi14NjQtbXN2YyI6ICI0LjMuMCIgfSB9LCAic2hhNTEyLUY3SFpHQmVOOUkwL0F1dUpTNVB3Y0Q4eGF5eDVyaTVHaGpZVURCRVZZVWtleHlBL2dpd2JETmpSVnJ4U2V6RTNUMjUwT1UySy93cC9sdFd4M1VPZWZnPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWFuZHJvaWQtYXJtNjQiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1hbmRyb2lkLWFybTY0QDQuMy4wIiwgIiIsIHsgIm9zIjogImFuZHJvaWQiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVRKUGlxNjd0S2xMdU9iUDZSa3d2VkdEb3hDTUJWdERnS2tMZmEvdXlqNy9GeXh2UXdIUytVT25WclhYZ2JFc2ZVYU1naVZ2QzRLYkpuUnIyNmhvNE5nPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NCI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NEA0LjMuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLW9NTi9XWlJiK1NPMzdCbVVFbEVnZUVXdVU4RS9IWFJraU9EeEp4TGUxVVRIVlhMcmRWU2dmYUpWN3BTbGhSR01TT2lYTHV4VElqZnNGM3dZdno4Y2dRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi14NjQiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1kYXJ3aW4teDY0QDQuMy4wIiwgIiIsIHsgIm9zIjogImRhcndpbiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLU42Q1VtdTRhNmJLVkFEZnc3N3AraXc2WWQ5UTNPQmhlMHZlYURYK1FhemZ1VllsUXNIZkRneEJyc2pRL0lXK3p5d0w4bVRyTmQwU2RKVC96Z3R2TWRBPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWZyZWVic2QteDY0IjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtZnJlZWJzZC14NjRANC4zLjAiLCAiIiwgeyAib3MiOiAiZnJlZWJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLXpETDVoQmtRZEg1QzZNcHFiSzNnUUFnUDgwdHNNd1NJMjZ2ak96akp0TkNNVW8wbEZnT0l0ekhLQkl1cE9aTlF4dDNvdVBIN1JQaHZOaGlUZkNlNUNRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybS1nbnVlYWJpaGYiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC1hcm0tZ251ZWFiaWhmQDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItUjA2SGROaTdBN09Fb01zZjZkNHRqWjcxUkNXblpRUEhqMm1ub3RTRlVSak5MZEJDK2NJZ1hRN2w4MUNxZW9pUWZ0amY2T09ibHhYTUluTWdOMlZ6TUE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtZ251IjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtZ251QDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1xVEpIRUxYOGpldGpoUlFIQ0xpbGtWTG15YnB6TlFBdGFJL2dhb1ZvaWRuL3VmYk5EYkFvOEtsSzJKK3lQb2M4d1F4dkR4Q21oLzVscjhuQzErbFRiZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC1hcm02NC1tdXNsIjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtbXVzbEA0LjMuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItWjZzdWtpUXNuZ25XTytsMzlYNHBQYmlXVDgxSUMrUExLRitQSHhJbHlaYkdOYjlNT0RmWWxYRVZsRnZlajVCT1pJbldYMDFrVnl6ZUx2SHNYaGZjelE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LWdudSI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LXg2NC1nbnVANC4zLjAiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1EUk5kUVJwU0d6UkdmQVJWdVZreHZNOFExMm5oMTlsNEJGL0c3ekdBMW9lKzl3Y0M2c2FGQkhUSVNycEljS3poaVh0U3JsU3JsdUNmdk11bGVkb0NUUT09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC14NjQtbXVzbCI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LXg2NC1tdXNsQDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItWjBJQURiRG84Ymg2STdoMklRTXg2MDFBZFhCTGZGcEVkVW90ZnQ4NmV2ZC84WlBmbFplOUNPUE84UTF2dytwZkxXSVVvOXpOL0pHWnZ3dUFKcWR1cWc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kiOiBbIkB0YWlsd2luZGNzcy9veGlkZS13YXNtMzItd2FzaUA0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAZW1uYXBpL2NvcmUiOiAiXjEuMTAuMCIsICJAZW1uYXBpL3J1bnRpbWUiOiAiXjEuMTAuMCIsICJAZW1uYXBpL3dhc2ktdGhyZWFkcyI6ICJeMS4yLjEiLCAiQG5hcGktcnMvd2FzbS1ydW50aW1lIjogIl4xLjEuNCIsICJAdHlieXMvd2FzbS11dGlsIjogIl4wLjEwLjEiLCAidHNsaWIiOiAiXjIuOC4xIiB9LCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItSE5aR09VeEVtRWxrc1lSN1M2c0M1alRlTkdwb2JBc3k5dTdHdTBBc2tKOC8yMEZSOUdxZWJVeUIrSEJjVS9heDZCSHVpdUppK09kYTRCK1lYNkgxeUE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2luMzItYXJtNjQtbXN2YyI6IFsiQHRhaWx3aW5kY3NzL294aWRlLXdpbjMyLWFybTY0LW1zdmNANC4zLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVBlK1JQVlRpMVQrcXltdXVScGNkdndTVlpqbmxsL2Y3bjhnQnhNTWgzeExUY3RNREtxcGRmR2ltYk15aW9xdExoVVlaeGRKOXdHTmhWN01LSHZnWnNRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLXdpbjMyLXg2NC1tc3ZjIjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtd2luMzIteDY0LW1zdmNANC4zLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1NdnJmMmtYVy95ZVcvT1RlelpsQ0dPaXJYUmNVdUxJQngvNVkxMkJhUE03d0pvcnlHNmRmUy9OSkw4YUJQcXRURXgvVm00VDR2S3pGVWNLRFQrVEtVQT09Il0sCgogICAgIkB0YWlsd2luZGNzcy9wb3N0Y3NzIjogWyJAdGFpbHdpbmRjc3MvcG9zdGNzc0A0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYWxsb2MvcXVpY2stbHJ1IjogIl41LjIuMCIsICJAdGFpbHdpbmRjc3Mvbm9kZSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUiOiAiNC4zLjAiLCAicG9zdGNzcyI6ICJeOC41LjEwIiwgInRhaWx3aW5kY3NzIjogIjQuMy4wIiB9IH0sICJzaGE1MTItSm0wNVRqeCs5eUNMR3Y1cXcxYys4NFBzZHM4TW55ckVRWUNCK0ZGazJsZ0dpVWpsUnFkeGtlNG1WVHVZcmoyeG5WWnFLaW0yQXByNXlTdVFSWUF3L3c9PSJdLAoKICAgICJAdHlieXMvd2FzbS11dGlsIjogWyJAdHlieXMvd2FzbS11dGlsQDAuMTAuMiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi40LjAiIH0gfSwgInNoYTUxMi1Sb0J2SjJYMHd1S2xXRklqcndmZkd3MUlxWkhLUXF6SWNoS2FhZFpaZm5OcHNBWXAybU0waDM2SnRQQ2pOREFIR2dZZXovMTV1TUJwZkd3Y2hoaU1nZz09Il0sCgogICAgIkB0eXBlcy9jaGFpIjogWyJAdHlwZXMvY2hhaUA1LjIuMyIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAdHlwZXMvZGVlcC1lcWwiOiAiKiIsICJhc3NlcnRpb24tZXJyb3IiOiAiXjIuMC4xIiB9IH0sICJzaGE1MTItTXc1NThvZUE5ZkZidjY1L3k0bUh0WERzOWJQbkZNWkFML2p4ZFBGVXBPSEhJWFg5MW1jZ0VIYlM1TGFocitwd1pGUjhBN0dRbGVSV2VJNmNHRkMyVUE9PSJdLAoKICAgICJAdHlwZXMvZGVlcC1lcWwiOiBbIkB0eXBlcy9kZWVwLWVxbEA0LjAuMiIsICIiLCB7fSwgInNoYTUxMi1jOWg5ZFZWTWlnTVBjNGJ3VHZDNWR4cXRxSlp3UVBlUHNXalBscFNPbm9qYm9yNnBHcWRrNTQxbGZBN0FxRlFyNXBCMUJSZHEwanVZOWRiODFCd3lGdz09Il0sCgogICAgIkB0eXBlcy9lc3RyZWUiOiBbIkB0eXBlcy9lc3RyZWVAMS4wLjkiLCAiIiwge30sICJzaGE1MTItR2hkUGd5MWVsNC9JbVAwNVgwNVV3NGN3Mi9NOTNCQ1VtbkV2V1pOU3RsQ3pFS01FNEZraytZcG9BNU9pSE5RbW9TN0NhZmI4WGEzUHlhOG0xUXJ6ZWc9PSJdLAoKICAgICJAdHlwZXMvbm9kZSI6IFsiQHR5cGVzL25vZGVAMjIuMTkuMTkiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidW5kaWNpLXR5cGVzIjogIn42LjIxLjAiIH0gfSwgInNoYTUxMi1keWgveE8yRmg1YllyZldhYXFHclJRUUdrTmRtWXc2QW1hQVV2WWVVTU5UV1F0dmI3OTZpa0xkbVRjaFJtT2xPaUlKMVREWGZXZ1Z4MVFrVWxRNkhldz09Il0sCgogICAgIkB0eXBlcy9yZWFjdCI6IFsiQHR5cGVzL3JlYWN0QDE5LjIuMTUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiY3NzdHlwZSI6ICJeMy4yLjIiIH0gfSwgInNoYTUxMi1lUndjR05IdmUrRThxdEVRU1NSbDZ1cmgrckZvcDR2OGdtNk84ckd2MjVDb2RidkZkTGpBMXZWUTFLa2lGRTB3MFVQT25iOHREaUZLTDVscDBydFk1UT09Il0sCgogICAgIkB0eXBlcy9yZWFjdC1kb20iOiBbIkB0eXBlcy9yZWFjdC1kb21AMTkuMi4zIiwgIiIsIHsgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJAdHlwZXMvcmVhY3QiOiAiXjE5LjIuMCIgfSB9LCAic2hhNTEyLWpwMkwvZVk2Zm4rS2dWVlFBT3FZSXRiRjBWWS9ZQXBlNU16MkYwYXlrU084Z3gzMWJZQ1p5dlNlWXhDSEt2ekhHNWVaamMrenlhUzVCckJXeWEyK2tRPT0iXSwKCiAgICAiQHZpdGVzdC9leHBlY3QiOiBbIkB2aXRlc3QvZXhwZWN0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBzdGFuZGFyZC1zY2hlbWEvc3BlYyI6ICJeMS4xLjAiLCAiQHR5cGVzL2NoYWkiOiAiXjUuMi4yIiwgIkB2aXRlc3Qvc3B5IjogIjQuMS42IiwgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAiY2hhaSI6ICJeNi4yLjIiLCAidGlueXJhaW5ib3ciOiAiXjMuMS4wIiB9IH0sICJzaGE1MTItN0VIRHF1UHRoQUxTVjBqaGhqZ0VXOEZYYXZpTXg3clNxdThXNm9xQ29BdU9oS292ODE0UDk5UURWMXB4TUEzUVB2MjFZdWR2Sm5nSWhqck5JNG9wTGc9PSJdLAoKICAgICJAdml0ZXN0L21vY2tlciI6IFsiQHZpdGVzdC9tb2NrZXJANC4xLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHZpdGVzdC9zcHkiOiAiNC4xLjYiLCAiZXN0cmVlLXdhbGtlciI6ICJeMy4wLjMiLCAibWFnaWMtc3RyaW5nIjogIl4wLjMwLjIxIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIm1zdyI6ICJeMi40LjkiLCAidml0ZSI6ICJeNi4wLjAgfHwgXjcuMC4wIHx8IF44LjAuMCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIm1zdyIsICJ2aXRlIl0gfSwgInNoYTUxMi1NQ0ZjNjNjek1qRUluT2xjWTJjcFFDdkNOK0tnYkFuKzYweHU5Y01nUDRzS2FMQzVKTkFLdzdKSDhRZEFub0FDODhoVzFJaVNOWitHZ1ZYbE4xVWNNUT09Il0sCgogICAgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6IFsiQHZpdGVzdC9wcmV0dHktZm9ybWF0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRpbnlyYWluYm93IjogIl4zLjEuMCIgfSB9LCAic2hhNTEyLWg1U3hEL0l6TmhaWW5yU1pSc1VaUUlDK3ZEMEdZOGNVdnEwaXdzbWtGS2l4UkNLTExXcUNYYS9GSVE0UzFSK3NJK1BHb29qa0hzZE5yYlppTTlRcGd3PT0iXSwKCiAgICAiQHZpdGVzdC9ydW5uZXIiOiBbIkB2aXRlc3QvcnVubmVyQDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAicGF0aGUiOiAiXjIuMC4zIiB9IH0sICJzaGE1MTItbk9QQ21uMit5RDBaTm1LZHNYR3YvVXhNTVdiTXVLZUQ2R3lZbmNOd2RrWUR4cFF2clBTS1lqMnJXdURqQzJZNGI2dzZoamlwNWRCS0Z6RVV1WmUzdkE9PSJdLAoKICAgICJAdml0ZXN0L3NuYXBzaG90IjogWyJAdml0ZXN0L3NuYXBzaG90QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6ICI0LjEuNiIsICJAdml0ZXN0L3V0aWxzIjogIjQuMS42IiwgIm1hZ2ljLXN0cmluZyI6ICJeMC4zMC4yMSIsICJwYXRoZSI6ICJeMi4wLjMiIH0gfSwgInNoYTUxMi1ZaHNkRTZ4QVZmVERtemp4TDJaRFV2amorWnNneU9LZStUZFF6cWtENzJ3SU9tSGthOE51R1E2TnBUTlp2OUQyWjYzZmJ3V0tKUGVWcEV3NEVRZ1l4dz09Il0sCgogICAgIkB2aXRlc3Qvc3B5IjogWyJAdml0ZXN0L3NweUA0LjEuNiIsICIiLCB7fSwgInNoYTUxMi1KRkt4TXg2dWRod0toL0xkbzI3MGUxN1FYNzEwdmd1bk1rdVBBdlhqSFN2QzZvcUxXQUhoVmhqZy9JNzFxMHUwQ0JTRXJJT0RWMUtqdjBGUU5TV2pkZz09Il0sCgogICAgIkB2aXRlc3QvdXRpbHMiOiBbIkB2aXRlc3QvdXRpbHNANC4xLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHZpdGVzdC9wcmV0dHktZm9ybWF0IjogIjQuMS42IiwgImNvbnZlcnQtc291cmNlLW1hcCI6ICJeMi4wLjAiLCAidGlueXJhaW5ib3ciOiAiXjMuMS4wIiB9IH0sICJzaGE1MTItRnhJWStVODFSM0xHS0N4YUhIRlJRNStnNi9pUmdHTG1lSFdkcDJBbWo0bGpRUnJFSVdIbVp5RGZEWUJSWmxweXFBN3FLeHRTOUREMWRoazhSblJJVlE9PSJdLAoKICAgICJhY29ybiI6IFsiYWNvcm5AOC4xNi4wIiwgIiIsIHsgImJpbiI6IHsgImFjb3JuIjogImJpbi9hY29ybiIgfSB9LCAic2hhNTEyLVVWSnlFOU10dE9zQlFJREt3MXNrYjluQXdRdVI1d3VHRDMrODJLNkpnSmxtL1krS0k5Mm9Oc01OR1pDWWREc1Z0UkhTYWswcGNWNURubzUrNGpoOXN3PT0iXSwKCiAgICAiYW5zaS1yZWdleCI6IFsiYW5zaS1yZWdleEA1LjAuMSIsICIiLCB7fSwgInNoYTUxMi1xdUpRWGxUU1VHTDJMSDlTVVhvOFZ3c1k0c29hbmhnbzZMTlNtODRFMUxCY0U4czNPMHdwZGlSenlSOXovWlpKTWxNV3YzN3FPT2I5cGRKbE1VRUtGUT09Il0sCgogICAgImFuc2ktc3R5bGVzIjogWyJhbnNpLXN0eWxlc0A0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjb2xvci1jb252ZXJ0IjogIl4yLjAuMSIgfSB9LCAic2hhNTEyLXpiQjlyQ0pBVDFyYmppVkRiMmhxS0ZITllMeGd0azhOVVJ4WjNJWndEM0Y2TnR4YlhaUUNublNpMUxreCtJRG9oZFBsRnAyMjJ3VkFMSWhlWkpRU0VnPT0iXSwKCiAgICAiYXNzZXJ0aW9uLWVycm9yIjogWyJhc3NlcnRpb24tZXJyb3JAMi4wLjEiLCAiIiwge30sICJzaGE1MTItSXppOFJRY2ZmcUNlTlZnRmlnS2xpMXNza2xJYnBIbkNZYzZBa25YR1lvQjZnckpxeWVieTdqdjEySlVRZ21UQW5JRG5iY2sxdXhrc1Q0ZHpOM1BXQkE9PSJdLAoKICAgICJiYXNlbGluZS1icm93c2VyLW1hcHBpbmciOiBbImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZ0AyLjEwLjMxIiwgIiIsIHsgImJpbiI6IHsgImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZyI6ICJkaXN0L2NsaS5janMiIH0gfSwgInNoYTUxMi1NdWpZTzNlUDcydXZtU0UwaTR3bHRzb2RSZklwWkFUUDNqdnpSTlJHR3hneklkN2FWb2NWSkpWM25mMDFxbnp6S0ZHeFFWQzlicFd4bDVjanhUci83UT09Il0sCgogICAgImJ1ZmZlci1mcm9tIjogWyJidWZmZXItZnJvbUAxLjEuMiIsICIiLCB7fSwgInNoYTUxMi1FK1hRQ1J3U2JhYWlDaHR2Nms2RHdnYytieCtCczZ2dUtKSEhsNWtveC9CYUtiaGlYenFRT3dLNGNPMjJ5RWxHcDJPQ21qd1ZoVDNIbXhneVBHbkpmUT09Il0sCgogICAgImNhbml1c2UtbGl0ZSI6IFsiY2FuaXVzZS1saXRlQDEuMC4zMDAwMTc5MyIsICIiLCB7fSwgInNoYTUxMi1pd1NzWVdhQ09vaDI2Y1Y4TndOUlZpSGxyZlV2WXNIRGZSVmNidG13MEtnNlBKSVpaWHdNa2oxNDQyRllMQkdrZVVmMWp1QXNVM0RUZnhXNTc5bXJQQT09Il0sCgogICAgImNoYWkiOiBbImNoYWlANi4yLjIiLCAiIiwge30sICJzaGE1MTItTlVQUmx1T2ZPaVRLQkt2V1B0U0Q0UGhGdldDcU9pMEJHU3ROV3M1N1g5anM3WEdUcHJTbUZvejVGMHRXaFI0V1BqTmVSOWpYcWRDNy9VcFNKVG5sUmc9PSJdLAoKICAgICJjaGFsayI6IFsiY2hhbGtANC4xLjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiYW5zaS1zdHlsZXMiOiAiXjQuMS4wIiwgInN1cHBvcnRzLWNvbG9yIjogIl43LjEuMCIgfSB9LCAic2hhNTEyLW9LbmJoRnlSSVhwVXVlejhpQk1teUVhNG5iajRJT1F5dWhjL3d5OWtZNy9XVlBjd0lPOVZBNjY4UHU4UmtPNyswRzc2U0xST2V5dzlDcFEwNjFpNG1BPT0iXSwKCiAgICAiY2xpZW50LW9ubHkiOiBbImNsaWVudC1vbmx5QDAuMC4xIiwgIiIsIHt9LCAic2hhNTEyLUlWM091MGpTTXpacmQzcFo0OG5Ma1Q5REE3QWcxcG5QemFpUWhwVzdjM1JiY3FxenZ6elZ1K0w4Z2ZxTXAvOElNMk1RdFNpcWFDeHJyY2Z1OEk4ck1BPT0iXSwKCiAgICAiY2xpdWkiOiBbImNsaXVpQDguMC4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInN0cmluZy13aWR0aCI6ICJeNC4yLjAiLCAic3RyaXAtYW5zaSI6ICJeNi4wLjEiLCAid3JhcC1hbnNpIjogIl43LjAuMCIgfSB9LCAic2hhNTEyLUJTZU5ueXVzNzVDNC8vTlE5Z1F0MS9jc1RYeW8vOFNiK2FmTEFrekFwdEZ1TXNvZDlIRm9rR051ZFpwaS9vUVY3M2huVksrc1IrNVBWUk1kK0RyN1lRPT0iXSwKCiAgICAiY2xzeCI6IFsiY2xzeEAyLjEuMSIsICIiLCB7fSwgInNoYTUxMi1lWW0wUVdCdFVyQldaV0cwZDM4Nk9HQXcxNlo5OTVQaU9WbzJCN2JqV1NiSGVkR2w1ZTBaV2FxNjVrT0dnVVNOZXNFSURrQjlJU2JUZy9KSzlkaENaQT09Il0sCgogICAgImNvbG9yLWNvbnZlcnQiOiBbImNvbG9yLWNvbnZlcnRAMi4wLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiY29sb3ItbmFtZSI6ICJ+MS4xLjQiIH0gfSwgInNoYTUxMi1SUkVDUHNqN2l1L3hiNW9LWWNzRkhTcHBGTm5zai81Mk9WVFJLYjR6UDVvblh3VkYzelZtbVRvTmNPZkdDK0NSRHBmSy9VNTg0Zk1nMzhaSENhRWxLUT09Il0sCgogICAgImNvbG9yLW5hbWUiOiBbImNvbG9yLW5hbWVAMS4xLjQiLCAiIiwge30sICJzaGE1MTItZE95KzNBdVczYTJ3TmJaSEl1TVpwVGNnakd1TFUvdUJML3ViY1pGOU9YYkRvOGZmNE84eVZwNUJmMGVmUzh1RW9ZbzVxNEZ4N2RZOU9nUUdYZ0FzUUE9PSJdLAoKICAgICJjb21tYW5kZXIiOiBbImNvbW1hbmRlckAyLjIwLjMiLCAiIiwge30sICJzaGE1MTItR3BWa21NOHZGMnZRVWtqMkx2Wm1EMzVKeGVKT0xDd0o5Y1VrdWd5azJudWhidjMrbUp2cExZWXQrMCtVU014RStvaitleS9sSkVuaFp3NzV4L09NY1E9PSJdLAoKICAgICJjb25jdXJyZW50bHkiOiBbImNvbmN1cnJlbnRseUA5LjIuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjaGFsayI6ICI0LjEuMiIsICJyeGpzIjogIjcuOC4yIiwgInNoZWxsLXF1b3RlIjogIjEuOC4zIiwgInN1cHBvcnRzLWNvbG9yIjogIjguMS4xIiwgInRyZWUta2lsbCI6ICIxLjIuMiIsICJ5YXJncyI6ICIxNy43LjIiIH0sICJiaW4iOiB7ICJjb25jIjogImRpc3QvYmluL2NvbmN1cnJlbnRseS5qcyIsICJjb25jdXJyZW50bHkiOiAiZGlzdC9iaW4vY29uY3VycmVudGx5LmpzIiB9IH0sICJzaGE1MTItZnNmck8wTXhWNjRabm95OC9sMXZWSWpqSGEyOVNaeXlxUGdRQndoaURjYVc4d0pjMlczWFdWT0d4NE0zb0pCbnYvemRVWklJcDFnRGVTOThHelA4Tmc9PSJdLAoKICAgICJjb252ZXJ0LXNvdXJjZS1tYXAiOiBbImNvbnZlcnQtc291cmNlLW1hcEAyLjAuMCIsICIiLCB7fSwgInNoYTUxMi1LdnA0NTlIclYyRkVKMUNBc2kxS3UrTVkza2FzSDE5VEZ5a1R6MnhXbU1lcTZiazJOVTNYWHZmSitRNjFtMHhrdFd3dCsxSFNZZjNKWnNUbXMzYVJKZz09Il0sCgogICAgImNzc3R5cGUiOiBbImNzc3R5cGVAMy4yLjMiLCAiIiwge30sICJzaGE1MTItejFIR0tjWXkyeEE4QUdRZndybjBQQXkrUEI3WC9HU2ozVVZKVzlxS3luNDN4V2ErZ2w1blhtVTRxcUxNUnpXVkxGQzhLdXNVWDhULzBrQ2lPWXBBSVE9PSJdLAoKICAgICJkYXRlLWZucyI6IFsiZGF0ZS1mbnNANC4yLjEiLCAiIiwge30sICJzaGE1MTItMzdSaFNkeGFHMXN1ZW42VkRDemE2ck5yUWZvb3lRaDU3SEZWUHdRR0VxMlFXbGlWTHpQUVo4T2EwMTd3ZU91K0haQ256STdOM1BmL3d5b0JLZkVxckE9PSJdLAoKICAgICJkYXRlLWZucy1qYWxhbGkiOiBbImRhdGUtZm5zLWphbGFsaUA0LjEuMC0wIiwgIiIsIHt9LCAic2hhNTEyLWhUSVAveit0K3FLd0JEY21tc25taldUZHV4Q2crNUtmZHFXUXZiMlgvOEM5K2tuWVk2ZXBOL3BmeGREdXlWbFNWZUZ6MHNNNWVFZndJVVE3MFU0Y2tnPT0iXSwKCiAgICAiZGV0ZWN0LWxpYmMiOiBbImRldGVjdC1saWJjQDIuMS4yIiwgIiIsIHt9LCAic2hhNTEyLUJ0ajJCT09PODNvM1d5SDU5ZThNZ1hzeEVRVmNhcmtVT3BFWXJ1YkIwdXJ3bk4xMHlRMzY0cnNpQnlVMTFuWmxxV1labTA1aS9vZjdpbzRtemloQnRRPT0iXSwKCiAgICAiZW1vamktcmVnZXgiOiBbImVtb2ppLXJlZ2V4QDguMC4wIiwgIiIsIHt9LCAic2hhNTEyLU1Tall6Y1dOT0EwZXdBSHB6ME14cFlGdndnNnlqeTFORzN4dGVvcXo2NDRWQ28vUlBnbnIxL0dHdCtpYzNpSlR6UThFdTNUZE0xNFNhd25WVW1HRTZBPT0iXSwKCiAgICAiZW5oYW5jZWQtcmVzb2x2ZSI6IFsiZW5oYW5jZWQtcmVzb2x2ZUA1LjIxLjUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZ3JhY2VmdWwtZnMiOiAiXjQuMi40IiwgInRhcGFibGUiOiAiXjIuMy4zIiB9IH0sICJzaGE1MTItbUxDTmJyUWxpMTFLMXlTVW11TnQ0WlVCM09wR0lEcTRxMnZUQlRmNWNMMmxwc1JqSTlRS3FTRDBuZGpXOEZ5dmNXL0pqNDZnTWU5c3l5SEFzdk1hL0E9PSJdLAoKICAgICJlcy1tb2R1bGUtbGV4ZXIiOiBbImVzLW1vZHVsZS1sZXhlckAyLjEuMCIsICIiLCB7fSwgInNoYTUxMi1uMjd6VFlNall1MWFqNE1qQ1d6U1A3RzlyNzV1dHNhb2M4bTYxd2VLK1c4Sk1CR0dReWJkNDNHc3RDWFozV05tU0Z0R1Q5d2k1OXFRVFc2bWhUUjVMUT09Il0sCgogICAgImVzYnVpbGQiOiBbImVzYnVpbGRAMC4yNS40IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGVzYnVpbGQvYWl4LXBwYzY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9hbmRyb2lkLWFybSI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvYW5kcm9pZC1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvYW5kcm9pZC14NjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2Rhcndpbi1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZGFyd2luLXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZnJlZWJzZC1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZnJlZWJzZC14NjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWFybSI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtYXJtNjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWlhMzIiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWxvb25nNjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LW1pcHM2NGVsIjogIjAuMjUuNCIsICJAZXNidWlsZC9saW51eC1wcGM2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtcmlzY3Y2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtczM5MHgiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbmV0YnNkLWFybTY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9uZXRic2QteDY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9vcGVuYnNkLWFybTY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9vcGVuYnNkLXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvc3Vub3MteDY0IjogIjAuMjUuNCIsICJAZXNidWlsZC93aW4zMi1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvd2luMzItaWEzMiI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvd2luMzIteDY0IjogIjAuMjUuNCIgfSwgImJpbiI6IHsgImVzYnVpbGQiOiAiYmluL2VzYnVpbGQiIH0gfSwgInNoYTUxMi04cGdqTFVjVWpjZ0RnKzJRNE5ZWG5QYm8vdm5jQVk0VW15YUNtMGpaZXZFUnFDSFpJYVd3ZEpIa2Y4WFF0dTRBeFNLQ2R2clViVDBYVXIxSWRaekk4UT09Il0sCgogICAgImVzY2FsYWRlIjogWyJlc2NhbGFkZUAzLjIuMCIsICIiLCB7fSwgInNoYTUxMi1XVWoycWx4YVF0TzRnNlBxNWMyOUdUY1dHRHlkOGl0TDh6VGxpcGdFQ3ozSmVzQWlpT0tvdGQ4SlU2b3RCM1BBQ2dHNnhrSlV5Vmhib01TK2JqZS9qQT09Il0sCgogICAgImVzdHJlZS13YWxrZXIiOiBbImVzdHJlZS13YWxrZXJAMy4wLjMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL2VzdHJlZSI6ICJeMS4wLjAiIH0gfSwgInNoYTUxMi03UlVLZlhnU01Na3p0Nlp1WG1xYXBPdXJMR1BQZmdqNmw5dVJaN2xSR29sdmsweTJ5b2NjMzVMZGN4S0M1UFFaZG4yRE1xaW9BUTJOb1djclRLbW02Zz09Il0sCgogICAgImV4cGVjdC10eXBlIjogWyJleHBlY3QtdHlwZUAxLjMuMCIsICIiLCB7fSwgInNoYTUxMi1rbnZ5ZWF1WWhxak9ZdlE2Nk16blNNczgzd21IckN5Y05FTjZBbysyQWVZRWZ4VUlrdWlWeGRFYTFxbEdFUEsrV2UzbjBUSGlEY2lZU3NDY2dXL0RvQT09Il0sCgogICAgImZkaXIiOiBbImZkaXJANi41LjAiLCAiIiwgeyAicGVlckRlcGVuZGVuY2llcyI6IHsgInBpY29tYXRjaCI6ICJeMyB8fCBeNCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbInBpY29tYXRjaCJdIH0sICJzaGE1MTItdEliWXRaYnVjT3MwQlJHcVBKa3NoSlVZZEwrU0RIN2RWTThnankrRVJwM1dBVWpMRUZKRSswMmthbnlIdHdqV09ud3JLWUJpd0FtTTBwNGtMSkFuWGc9PSJdLAoKICAgICJmc2V2ZW50cyI6IFsiZnNldmVudHNAMi4zLjMiLCAiIiwgeyAib3MiOiAiZGFyd2luIiB9LCAic2hhNTEyLTV4b0RmWCtmTDdmYUFUbmFnbVdQcGJGdHdoL1I3N1dtTU1xcUhHUzY1QzN2dkIwWUhyZ0YrQjFZbVozNDQxdE1qNW42M2swMjEyWE5vSnd6bGhmZlF3PT0iXSwKCiAgICAiZ2V0LWNhbGxlci1maWxlIjogWyJnZXQtY2FsbGVyLWZpbGVAMi4wLjUiLCAiIiwge30sICJzaGE1MTItRHlGUDNCTS8zWUhUUU9DVUwvdzBPWkhSMGxwS2VHcnhvdGNIV2NxTkVkbmx0cUZ3WFZmaEVCUTk0ZUlvMzRBZlFwbzByR2tpNGN5SWlmdFkwNmgyRmc9PSJdLAoKICAgICJncmFjZWZ1bC1mcyI6IFsiZ3JhY2VmdWwtZnNANC4yLjExIiwgIiIsIHt9LCAic2hhNTEyLVJiSjUvam1GY05OQ2NEVjVvOWVUbkJMSi9Ic3pXVjBQNzNiYytGZjRuUy9ySmorWWFTNklHeWlPTDBWb0JZWCtsMVdybDNrNjNoL0tySCtuaEowWHZRPT0iXSwKCiAgICAiaGFzLWZsYWciOiBbImhhcy1mbGFnQDQuMC4wIiwgIiIsIHt9LCAic2hhNTEyLUV5a0pUL1ExS2pUV2N0cHBnSUFnZlNPMHRLVnVaVWpoZ01yMTdrcVR1bU1sNkFmdjNFSVNsZVU3cVpVem9YREZUQUhUREM0Tk9vRy9aeFUzRXZsTVBRPT0iXSwKCiAgICAiaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQiOiBbImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50QDMuMC4wIiwgIiIsIHt9LCAic2hhNTEyLXp5bW01K3Urc0NzU1d5RDlxTmFlalYzREZ2aENLY2xLZGl6WWFKVXVIQTgzUkxqYjduU3VHbmRkQ0hHdjBoaytLWTdCTUFsc1dlSzRVZWc2RVY2WFFnPT0iXSwKCiAgICAiaml0aSI6IFsiaml0aUAyLjcuMCIsICIiLCB7ICJiaW4iOiB7ICJqaXRpIjogImxpYi9qaXRpLWNsaS5tanMiIH0gfSwgInNoYTUxMi1BQy83Sm9mSnZaR3JybmVXTmFFbkplT0xVeCtKbEd0N3ROYTB3WmlSUFQ0TVkxd21mS2p0Mis2TzJwMnV6Mitza2xsOE9aWm1KTU5xZWtlN2tLYk5nUT09Il0sCgogICAgImxpYnBob25lbnVtYmVyLWpzIjogWyJsaWJwaG9uZW51bWJlci1qc0AxLjEyLjQxIiwgIiIsIHt9LCAic2hhNTEyLWxzbU1tR1hCeFhJSy9WTUxFajBrTDZNdFVzMWtCR2oxblRDemk2emdRb0cxREV3cXd0MkRReUh4Y0x5a2NlSXhBbmZFM2h5YTdOdUloNlBwQzZTM2ZBPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzIjogWyJsaWdodG5pbmdjc3NAMS4zMi4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImRldGVjdC1saWJjIjogIl4yLjAuMyIgfSwgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAibGlnaHRuaW5nY3NzLWFuZHJvaWQtYXJtNjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1kYXJ3aW4tYXJtNjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1kYXJ3aW4teDY0IjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtZnJlZWJzZC14NjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1saW51eC1hcm0tZ251ZWFiaWhmIjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251IjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtbXVzbCI6ICIxLjMyLjAiLCAibGlnaHRuaW5nY3NzLWxpbnV4LXg2NC1nbnUiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtbXVzbCI6ICIxLjMyLjAiLCAibGlnaHRuaW5nY3NzLXdpbjMyLWFybTY0LW1zdmMiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy13aW4zMi14NjQtbXN2YyI6ICIxLjMyLjAiIH0gfSwgInNoYTUxMi1OWFlCemluTnJibGZyYVBHeXJiUG9EMTlDMWg5bGZJLzFtemdXWXZYVVRlNDE0R3ovWDFGRDJYQlpTWk03clJUck1BOEpMM090QWFHaWZySUtoUTV5UT09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1hbmRyb2lkLWFybTY0IjogWyJsaWdodG5pbmdjc3MtYW5kcm9pZC1hcm02NEAxLjMyLjAiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItWUs3L0NsVHQ0a0FLMHZvNnczWCtQbm0wRDJjZjJ2UEhiaE9YZG9OdGkxR2EwYWwxUDRUQlpod2pBVHZqTndMRUJDbkt2akpjMmpRZ0hYSDBORXdsQWc9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtZGFyd2luLWFybTY0IjogWyJsaWdodG5pbmdjc3MtZGFyd2luLWFybTY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVJ6ZUc5SnU1YmFnMkJ2MS9sd2xWSnZCRTNxNlR0WHNrZFpMTEN5Zmc1cHQrSEx6OUJxbElDTzdMWk03VkhOVFRuLzVQUmhIRkJTams1bGM0Y21zY1BRPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzLWRhcndpbi14NjQiOiBbImxpZ2h0bmluZ2Nzcy1kYXJ3aW4teDY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1VK1FzQnAybS9zMndxcFVZVC82d25sYWdkWmJ0WmRuZFNtdXQvTkpxbENjTUxUV3A1bXVDcklEK0s1VUo2anFEMkJGc2hlakNZWG5pUERiTmg3M1Y4dz09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1mcmVlYnNkLXg2NCI6IFsibGlnaHRuaW5nY3NzLWZyZWVic2QteDY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSkNUaWdlZEVrc1prM3RIVFR0aG5NZFZmR2Y2MUZreThKaTJFNFlqVVRFUVgxNHhpeS9sVHpYbnUxdndpWmUzYlllMHErU3BzU0gvQ1RlRFhLNldIaWc9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtLWdudWVhYmloZiI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LWFybS1nbnVlYWJpaGZAMS4zMi4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTIteDZybm5wUmEyR0wwelFPa3Q2cnRzM1lEUHpkdUxwV3Z3QUY2RU1oWEZWWlhENHRQckJrRUZxekdvd3pDc0lXc1BqcVNLK3R5TkVPRFVCWGVlVkhTa3c9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251IjogWyJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItMG5uTXlveU9MUkpYZmJNT2lsYVNSY0xIM0p3NXo5SEROR2ZUL2d3Q1BnYURqbngwaTh3N3ZCekZMRlIxZjZDTUxLRjhnVmJlYm1rVU4zZmEva1FKcFE9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtbXVzbCI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LWFybTY0LW11c2xAMS4zMi4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1VcFFrb2VucjRVSkV6Z1ZJWXBJODBsREZ2Um1QVmc2b3Fib05IZm9INENRSWZOQStIT3JaN01vN0taUDAyZEM2TGpnaFBRSmVCc3ZYaEpvZC93bklCZz09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtZ251IjogWyJsaWdodG5pbmdjc3MtbGludXgteDY0LWdudUAxLjMyLjAiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1WN1FyNTJJaFptZEtQVnIrVnR3OG8rV0xzUUpZQ1RkOGxvSWZwRGFNUldHVVpmQk9ZRUpleUpJa3FHSURNWlB3UHgyNHBVTWZ3U3h4SThwaHIvTWJPQT09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtbXVzbCI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LXg2NC1tdXNsQDEuMzIuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLWJZY0xwK1ZiMGF3c2lYZy84MHVDUmV6Q1lITmcxL2wzbXQwZ3pIbldWOVhQMVc1c0thNS9UQ2RHV2FSL3pCTTJQZUYvSGJzUXYvajJVUk5PaVZ1eFdnPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzLXdpbjMyLWFybTY0LW1zdmMiOiBbImxpZ2h0bmluZ2Nzcy13aW4zMi1hcm02NC1tc3ZjQDEuMzIuMCIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItOFNiQzhCUjQwcFM2YmFDTThzYnRZRFN3RVZRZDRKbEZUT2xhRDNnV0dIZlRoVGNBQm5OREJkYTZlVFplcWJvZmFsSUpoRngwcUt6Z0hKbWNQVG5HZHc9PSJdLAoKICAgICJsaWdodG5pbmdjc3Mtd2luMzIteDY0LW1zdmMiOiBbImxpZ2h0bmluZ2Nzcy13aW4zMi14NjQtbXN2Y0AxLjMyLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1BbXE5Qi9Tb1pZZERpMWtGcm9qbm9xUEx4WWhRNFdvNVhpTDhFVkpyVnNCOEFSb0MxUFdXNlZHdFQwV0tDZW1qeThhQytsb3VKbmpTN1UxOHgzYjA2UT09Il0sCgogICAgIm1hZ2ljLXN0cmluZyI6IFsibWFnaWMtc3RyaW5nQDAuMzAuMjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjIjogIl4xLjUuNSIgfSB9LCAic2hhNTEyLXZkMkY0WVV5RVhLR2NMSG9xK1RFeUNqeHVlU2VIbkZ4eXlqTnA4MHlnMFhWNHZVaG5EZXIvbHZ2bHFNL2FyQjViWFFONUsyLzNvaW55Q1J5eDhUMkNRPT0iXSwKCiAgICAibmFub2lkIjogWyJuYW5vaWRAMy4zLjEyIiwgIiIsIHsgImJpbiI6IHsgIm5hbm9pZCI6ICJiaW4vbmFub2lkLmNqcyIgfSB9LCAic2hhNTEyLVpCOVJILzM5cXBxNVZ1NlkrTm1VYUZoUVI2cHArTTJYdDc2WEJuRXdEYUdjVkFxaGx2eHJsM0IyYktTNUQzTkgzUVI3NnYzYVNyS2FGL0tpeTdsRXRRPT0iXSwKCiAgICAibmV4dCI6IFsibmV4dEAxNi4yLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQG5leHQvZW52IjogIjE2LjIuNiIsICJAc3djL2hlbHBlcnMiOiAiMC41LjE1IiwgImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZyI6ICJeMi45LjE5IiwgImNhbml1c2UtbGl0ZSI6ICJeMS4wLjMwMDAxNTc5IiwgInBvc3Rjc3MiOiAiOC40LjMxIiwgInN0eWxlZC1qc3giOiAiNS4xLjYiIH0sICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBuZXh0L3N3Yy1kYXJ3aW4tYXJtNjQiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy1kYXJ3aW4teDY0IjogIjE2LjIuNiIsICJAbmV4dC9zd2MtbGludXgtYXJtNjQtZ251IjogIjE2LjIuNiIsICJAbmV4dC9zd2MtbGludXgtYXJtNjQtbXVzbCI6ICIxNi4yLjYiLCAiQG5leHQvc3djLWxpbnV4LXg2NC1nbnUiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy1saW51eC14NjQtbXVzbCI6ICIxNi4yLjYiLCAiQG5leHQvc3djLXdpbjMyLWFybTY0LW1zdmMiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy13aW4zMi14NjQtbXN2YyI6ICIxNi4yLjYiLCAic2hhcnAiOiAiXjAuMzQuNSIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJAb3BlbnRlbGVtZXRyeS9hcGkiOiAiXjEuMS4wIiwgIkBwbGF5d3JpZ2h0L3Rlc3QiOiAiXjEuNTEuMSIsICJiYWJlbC1wbHVnaW4tcmVhY3QtY29tcGlsZXIiOiAiKiIsICJyZWFjdCI6ICJeMTguMi4wIHx8IDE5LjAuMC1yYy1kZTY4ZDJmNC0yMDI0MTIwNCB8fCBeMTkuMC4wIiwgInJlYWN0LWRvbSI6ICJeMTguMi4wIHx8IDE5LjAuMC1yYy1kZTY4ZDJmNC0yMDI0MTIwNCB8fCBeMTkuMC4wIiwgInNhc3MiOiAiXjEuMy4wIiB9LCAib3B0aW9uYWxQZWVycyI6IFsiQG9wZW50ZWxlbWV0cnkvYXBpIiwgIkBwbGF5d3JpZ2h0L3Rlc3QiLCAiYmFiZWwtcGx1Z2luLXJlYWN0LWNvbXBpbGVyIiwgInNhc3MiXSwgImJpbiI6IHsgIm5leHQiOiAiZGlzdC9iaW4vbmV4dCIgfSB9LCAic2hhNTEyLXFPVmdLSmcxK0F0MTVOcGVVUCtlSmdDSHZUQ2dYc29nd2VxODdSaS9JeDdQa3FRSGc0c2RhWG1TRnFLbGdhSVhFNGtXMGcyNUxFNjhXODdVQU5sSHR3PT0iXSwKCiAgICAib2J1ZyI6IFsib2J1Z0AyLjEuMSIsICIiLCB7fSwgInNoYTUxMi11VHFGOU11UHJhQVErSXNuUGYzNjZSRzRjUDlSdFVpN01MTzFOM0tFYyt3YjBhNnlLcGVMMGxtazJJQjFqWTVLSFBBbFRjNlQvSlJkQy9ZcXhITndrUT09Il0sCgogICAgInBhdGhlIjogWyJwYXRoZUAyLjAuMyIsICIiLCB7fSwgInNoYTUxMi1XVWpHY0FxUDFnUWFjb1FlK09CSnNGQTdMZDREeVh1VUlqWjVjYzc1Y0xIdko3ZHROc1R1Z3BoeElBRHdzcFMrQXJhQVVlUENLclNWdFBMRmovRjg4dz09Il0sCgogICAgInBpY29jb2xvcnMiOiBbInBpY29jb2xvcnNAMS4xLjEiLCAiIiwge30sICJzaGE1MTIteGNlSDJzbmh0YjVNOWxpcURzbUV3NTZsZTM3Nm1UWmtFWC9qRWIvUnhORnllZ051bDdlTnNsQ1hQOUZEai9MY3UwWDhLRXlNY2VQMm50cGFIckRFVkE9PSJdLAoKICAgICJwaWNvbWF0Y2giOiBbInBpY29tYXRjaEA0LjAuNCIsICIiLCB7fSwgInNoYTUxMi1RUDg4QkFLdk1hbS8zTnhINnZqMm8yMVI2TWp4WlVBZDZubHdBUy9wbkd2TjlJVkxvY0xIeEdZSXpGaGc2ZlVRKzV0aDZQNGR2NGVXOWpYM0RTSWo3QT09Il0sCgogICAgInBvc3Rjc3MiOiBbInBvc3Rjc3NAOC41LjE1IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIm5hbm9pZCI6ICJeMy4zLjEyIiwgInBpY29jb2xvcnMiOiAiXjEuMS4xIiwgInNvdXJjZS1tYXAtanMiOiAiXjEuMi4xIiB9IH0sICJzaGE1MTItRmZSOHNqZDRlbTJUNmZiM0kyTXdBSlU3SFdWTXI5emJhK2VubVFlZVdGZkNibStVT0MvMFg0RFM4WHRwVVRNd1dNR2JqS1lQN3hqZk5la3p5R21CM0E9PSJdLAoKICAgICJyZWFjdCI6IFsicmVhY3RAMTkuMi42IiwgIiIsIHt9LCAic2hhNTEyLXNmV0dHZmF2aTB4cjhQZzBzVnN5SE1BT3ppVllLZ1BMTnJTN2lnK2l2TU5iM3diQ0J3M0t4dGZsc0dCQXdEM2dZUWxFL0FFWnNUTGdUb1JyU0NqYjBRPT0iXSwKCiAgICAicmVhY3QtZGF5LXBpY2tlciI6IFsicmVhY3QtZGF5LXBpY2tlckA5LjE0LjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGRhdGUtZm5zL3R6IjogIl4xLjQuMSIsICJAdGFiYnlfYWkvaGlqcmktY29udmVydGVyIjogIjEuMC41IiwgImRhdGUtZm5zIjogIl40LjEuMCIsICJkYXRlLWZucy1qYWxhbGkiOiAiNC4xLjAtMCIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJyZWFjdCI6ICI+PTE2LjguMCIgfSB9LCAic2hhNTEyLXRCYW9EV2pQd2UwTTVwR3J1bTRIMFNSNkx5aytCTzlvSG5wOUpiS3BHS1cybWxyYU5QZ1A5Qk1mc2c1cFdwd3Jzc0FSbWVxazdZQmwyb1h1dFpUYUhBPT0iXSwKCiAgICAicmVhY3QtZG9tIjogWyJyZWFjdC1kb21AMTkuMi42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInNjaGVkdWxlciI6ICJeMC4yNy4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgInJlYWN0IjogIl4xOS4yLjYiIH0gfSwgInNoYTUxMi0wcHJNSStodkJiUGpzV254REx4bENHeU04UE42VXVXakVVQ1ltWmhPNjd4SVY5WGFzYS9yL3ZEbnErWHlxNExvMjdnOFFTYk81WXpBUnUwRDFTcHMzZz09Il0sCgogICAgInJlcXVpcmUtZGlyZWN0b3J5IjogWyJyZXF1aXJlLWRpcmVjdG9yeUAyLjEuMSIsICIiLCB7fSwgInNoYTUxMi1mR3hFSTcrd3NHOXhydmRqc3JsbUwyMk9NVFRpSFJ3QU1yb2lFZU1ncThnem9MQy9QUXI3UnNSRFNUTFVnL2JaQVp0RitUVklrSGM2LzRSSUtydWkrUT09Il0sCgogICAgInJlc2VsZWN0IjogWyJyZXNlbGVjdEA1LjIuMCIsICIiLCB7fSwgInNoYTUxMi1BZ1ozVU9abTNZbmRmcko0T1lqZ3JUN2JtQ20vMWlxa2p2RWZIL29ZanpoNlBEMnF3NFF1VDNqam5YSXJwZHQ0TVRwTVhjbE1UM2xYYm1SWStYUmFrdz09Il0sCgogICAgInJvbGxkb3duIjogWyJyb2xsZG93bkAxLjAuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAb3hjLXByb2plY3QvdHlwZXMiOiAiPTAuMTMwLjAiLCAiQHJvbGxkb3duL3BsdWdpbnV0aWxzIjogIl4xLjAuMCIgfSwgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQHJvbGxkb3duL2JpbmRpbmctYW5kcm9pZC1hcm02NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1kYXJ3aW4tYXJtNjQiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1mcmVlYnNkLXg2NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmIjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LWFybTY0LWdudSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsIjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXBwYzY0LWdudSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1zMzkweC1nbnUiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctbGludXgteDY0LWdudSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC14NjQtbXVzbCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1vcGVuaGFybW9ueS1hcm02NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy13YXNtMzItd2FzaSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjIjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLXdpbjMyLXg2NC1tc3ZjIjogIjEuMC4xIiB9LCAiYmluIjogeyAicm9sbGRvd24iOiAiYmluL2NsaS5tanMiIH0gfSwgInNoYTUxMi1YMEtRSGxqTm5Fa1dOcXFpejl6SnJHdW5oMUIwSGdPeExYdm5GcENPY2FkemN5NXFvaFozdHFNRVVnMDB2bmNvUm92WHVLM1pxQ1Q5S25uS3pvSW5GUT09Il0sCgogICAgInJ4anMiOiBbInJ4anNANy44LjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuMS4wIiB9IH0sICJzaGE1MTItZGhLZjkwM1UvUFFaWTZib05OdEFHZFdiRzg1V0FialQvMXhZb1pJQzdGQVkweVdhcE9CUVZzVnJEbDU4Vzg2Ly9lMVZwTU5CdFJWNE1hWGZkTXlTRkE9PSJdLAoKICAgICJzY2hlZHVsZXIiOiBbInNjaGVkdWxlckAwLjI3LjAiLCAiIiwge30sICJzaGE1MTItZU52K1dyVmJLdTFmM3ZiWUpUL3h0aUY1c3lBNUhQSU10ZjlJZ1kvbktnMHNXcXpBVUV2cVkveG03T2NaYy9xYWZMeC9pTzlGZ09tZVNBcDR2NXRpL1E9PSJdLAoKICAgICJzZW12ZXIiOiBbInNlbXZlckA3LjguMCIsICIiLCB7ICJiaW4iOiB7ICJzZW12ZXIiOiAiYmluL3NlbXZlci5qcyIgfSB9LCAic2hhNTEyLUFjTTdkVi81dWw0RWVrb1EyOUFnbTV2cmk4Sk5xUnlqMzlvMHFwWDZ2REYyR1pydHV0Wmw1UndnRDFYblpqaVRBZm5jc0poTUk0OFFRSDNzTjg3WU5BPT0iXSwKCiAgICAic2hhcnAiOiBbInNoYXJwQDAuMzQuNSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAaW1nL2NvbG91ciI6ICJeMS4wLjAiLCAiZGV0ZWN0LWxpYmMiOiAiXjIuMS4yIiwgInNlbXZlciI6ICJeNy43LjMiIH0sICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtZGFyd2luLWFybTY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLWRhcndpbi14NjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWRhcndpbi14NjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybSI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgtYXJtNjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1yaXNjdjY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1zMzkweCI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgteDY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4bXVzbC14NjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saW51eC1hcm0iOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgtYXJtNjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgtcHBjNjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgtcmlzY3Y2NCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC1saW51eC1zMzkweCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC1saW51eC14NjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXhtdXNsLWFybTY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLWxpbnV4bXVzbC14NjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtd2FzbTMyIjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLXdpbjMyLWFybTY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLXdpbjMyLWlhMzIiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtd2luMzIteDY0IjogIjAuMzQuNSIgfSB9LCAic2hhNTEyLU91OUk1RnQ5V05jQ2JYclU5Y01nUEJjQ0s4TGl3THFjYnl3VzN0NG9EVjM3bjFwenB1TkxzWWlBVjhlT0RuamJ0UWxTRHdaMmNVRWVRejRFNTRIbHRnPT0iXSwKCiAgICAic2hlbGwtcXVvdGUiOiBbInNoZWxsLXF1b3RlQDEuOC4zIiwgIiIsIHt9LCAic2hhNTEyLU9ibW5JRjRoWE5nMUJxaG5IbWdiREVURjhkTFBDZ2daV0Jqa1FmaFpwYnN6Wm5ZdXI1RFVsalRjQ0hpaTVMQzNKNUUweWVPLzFMSU15SCtVdkhRZ3l3PT0iXSwKCiAgICAic2lnaW5mbyI6IFsic2lnaW5mb0AyLjAuMCIsICIiLCB7fSwgInNoYTUxMi15YngwV08xLzhiU0JMRVdYWnZFZDdnTVczU24zSkZsVzNUdlgxblJFYkRMUk5RTmFlTk44V0swbWVCd1BkQWFPSTdUdFJSUkpuL0VzMXpocnJDSHU3Zz09Il0sCgogICAgInNvdXJjZS1tYXAiOiBbInNvdXJjZS1tYXBAMC42LjEiLCAiIiwge30sICJzaGE1MTItVWpnYXB1bVdsYk1oa0JnelQ3WWtjNVlYVVQ0NkYwaUt1OFNHWHEwYmN3UDVkei9oMFBsajZlbkpxanoxWmJxMmw1V2FxWW5yVmJ3V09XTXlGM0Y0N2c9PSJdLAoKICAgICJzb3VyY2UtbWFwLWpzIjogWyJzb3VyY2UtbWFwLWpzQDEuMi4xIiwgIiIsIHt9LCAic2hhNTEyLVVYV01LaExPd1ZLYjcyOElVdFFQWHhmWVUrdXNkeWJ0VXJLLzh1R0U4Q1FNdnJoT3B3dnpEQndqMFFoU0w3TVFjN3ZJc0lTQkc4VlE4K0lEUXhwZlFBPT0iXSwKCiAgICAic291cmNlLW1hcC1zdXBwb3J0IjogWyJzb3VyY2UtbWFwLXN1cHBvcnRAMC41LjIxIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImJ1ZmZlci1mcm9tIjogIl4xLjAuMCIsICJzb3VyY2UtbWFwIjogIl4wLjYuMCIgfSB9LCAic2hhNTEyLXVCSFUzTDNjenNJeVlYS1g4OGZkckdvdnhkU0NvVEdEUlo2U1lYdFNSeExaVXpIZzVQLzY2SHQ2dW9VbEh1OUVab2QraW5YaEtvM3FRZ3dYVVQveTF3PT0iXSwKCiAgICAic3RhY2tiYWNrIjogWyJzdGFja2JhY2tAMC4wLjIiLCAiIiwge30sICJzaGE1MTItMVhNSkU1ZlFvMWpHSDZZLzdlYm53UE9CRWtJRW5UNFFGMzJkNVIxK1ZYZFh2ZU0wSUJNSnQ4emZheFgxUDNRaFZ3clllKzU3Nitqa0FOdFNTMm1CYnc9PSJdLAoKICAgICJzdGQtZW52IjogWyJzdGQtZW52QDQuMS4wIiwgIiIsIHt9LCAic2hhNTEyLVJxN3liY1gyUnVDNTVyOW9hUFZFVzcveHUzdGo4dTRHZUJZSEJXQ3ljaEZ0ek1Jcjg2QTdlM1BQRUJQVDM3c0hTdEtYMytUaVgvRnIvQUNtSkxWbExRPT0iXSwKCiAgICAic3RyaW5nLXdpZHRoIjogWyJzdHJpbmctd2lkdGhANC4yLjMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZW1vamktcmVnZXgiOiAiXjguMC4wIiwgImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50IjogIl4zLjAuMCIsICJzdHJpcC1hbnNpIjogIl42LjAuMSIgfSB9LCAic2hhNTEyLXdLeVFSUXBqSjBzSXA2MkVyU1pkR3NqTUpXc2FwNW9STmloSGh1Nkc3SlZPLzlqSUI2VXlldkwrdFh1T3Fybmc4ai9jeEtUV3lXVXd2U1RyaWlaei9nPT0iXSwKCiAgICAic3RyaXAtYW5zaSI6IFsic3RyaXAtYW5zaUA2LjAuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJhbnNpLXJlZ2V4IjogIl41LjAuMSIgfSB9LCAic2hhNTEyLVkzOFZQU0hjcWtGckNwRm5ROXZ1U1htcXV1djVvWE9LcEdlVDZhR3JyM28zR2M5QWxWYTZKQmZVU09DbmJ4R0daRisvMG9vSTdLclB1VVN6dFVkVTVBPT0iXSwKCiAgICAic3R5bGVkLWpzeCI6IFsic3R5bGVkLWpzeEA1LjEuNiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjbGllbnQtb25seSI6ICIwLjAuMSIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJyZWFjdCI6ICI+PSAxNi44LjAgfHwgMTcueC54IHx8IF4xOC4wLjAtMCB8fCBeMTkuMC4wLTAiIH0gfSwgInNoYTUxMi1xU1Z5RFRlTW90ZHZRWW9IV0xOR3dSRkpIQytpK1p2ZEJSWW9zT0ZnQytXZzF2eDRmck4yL1JHL05BN1NZcXF2S05MZjM5UDJMU1JBMnB1Nm4wWFlaQT09Il0sCgogICAgInN1cHBvcnRzLWNvbG9yIjogWyJzdXBwb3J0cy1jb2xvckA4LjEuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJoYXMtZmxhZyI6ICJeNC4wLjAiIH0gfSwgInNoYTUxMi1NcFVFTjJPb2R0VXp4dktRbDcyY1VGN1JRNUVpSHNHdlNzVkcwaWE5YzVSYldHTDJDSTRDN0VwUFM4VVRCSXBsbmx6WmlOdVY1NncrRnVOeHkzdHkyUT09Il0sCgogICAgInRhaWx3aW5kLW1lcmdlIjogWyJ0YWlsd2luZC1tZXJnZUAzLjYuMCIsICIiLCB7fSwgInNoYTUxMi11eEw3cUFWUXJpcVJRUEF5SzNwajY2VnFza1dxb1ozN1BXOTRqd09Ud05mcS96OW95dTFWK2VxclpxdFIyK2ZDaVhkWU9aZS9Nb2R0OEd0dnFOenUrdz09Il0sCgogICAgInRhaWx3aW5kY3NzIjogWyJ0YWlsd2luZGNzc0A0LjMuMCIsICIiLCB7fSwgInNoYTUxMi15Nm54TUdCMW5NVzlSNms5NmU1Z2RJRnpjZkwvZ1RKUk5hcUdlczFZdmtMblBWWHpXZ2JxRkYyeUxDMFQ4Rzc3NG4yNGN4M1BlOFhyS29uaUNPQUgrUT09Il0sCgogICAgInRhcGFibGUiOiBbInRhcGFibGVAMi4zLjMiLCAiIiwge30sICJzaGE1MTItdXhjL3pwcUZnNng3Qzh2T0U3bGg2TGJkYThlRUw5em1WbS9QTGVUUEJSaGgxeENnZFdhUStKMUNVaWVHcElmbTJIZHRzVXBSditIc2hpYXNCTWNjNkE9PSJdLAoKICAgICJ0ZXJzZXIiOiBbInRlcnNlckA1LjE2LjkiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlLW1hcCI6ICJeMC4zLjIiLCAiYWNvcm4iOiAiXjguNS4wIiwgImNvbW1hbmRlciI6ICJeMi4yMC4wIiwgInNvdXJjZS1tYXAtc3VwcG9ydCI6ICJ+MC41LjIwIiB9LCAiYmluIjogeyAidGVyc2VyIjogImJpbi90ZXJzZXIiIH0gfSwgInNoYTUxMi1IUGEvRmRUQjlYR0kySDEva2VMRlpIeGw2V052QUk0WWFsSEd0RFFUbE1uSmNvcVNhYjFVd0w0bDFoR0VoczYvR21MSEJaSWcvWWdCKytqY2J6b09FZz09Il0sCgogICAgInRpbnliZW5jaCI6IFsidGlueWJlbmNoQDIuOS4wIiwgIiIsIHt9LCAic2hhNTEyLTArRFV2cVdNVmFsTG1oYTZscjRrRDhpQU1LMUh6VjAvYUtuQ3RXYjl2OTY0MVRuUC9NRmI3UGMyYnhveFFqVFhBRXJyeVhWZ1VPZnYyWXFObGxxR2VnPT0iXSwKCiAgICAidGlueWV4ZWMiOiBbInRpbnlleGVjQDEuMS4yIiwgIiIsIHt9LCAic2hhNTEyLWRBcVNxRS9SYWJwQktJOCtoMjZHZkxxNlZiM0pWWHMzMFhZUWpkTWphai9jMnRTOElZWU1iSXpQNTk5S3RSajdjNTcvd1lBcGIzUWpnUmdYbXJDdWtBPT0iXSwKCiAgICAidGlueWdsb2JieSI6IFsidGlueWdsb2JieUAwLjIuMTYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZmRpciI6ICJeNi41LjAiLCAicGljb21hdGNoIjogIl40LjAuNCIgfSB9LCAic2hhNTEyLXBuOTlWaG9BQ1lSOG5GSGh4cWl4K3V2c2JYaW5lQWFzV201b2pYb044eEV3SzVLZDMvVHJoTm4xd0J5dUQ1MlV4V1JMeThwdStrUk1uaUVpNkVxOVpnPT0iXSwKCiAgICAidGlueXJhaW5ib3ciOiBbInRpbnlyYWluYm93QDMuMS4wIiwgIiIsIHt9LCAic2hhNTEyLUJmK0lMbUJncmV0VXJkSnh6WE0wU2dYTFozWGZpYVV1T2ovSUtRSHVUWGlwKzA1WG4rdXlFWWRWZzBrWURpcFRCY0xyQ1Z5VXpBUHo3UW1BcmIwbW13PT0iXSwKCiAgICAidHJlZS1raWxsIjogWyJ0cmVlLWtpbGxAMS4yLjIiLCAiIiwgeyAiYmluIjogeyAidHJlZS1raWxsIjogImNsaS5qcyIgfSB9LCAic2hhNTEyLUwwT3JwaThxR3BSRy8vTmQrSDkwdkZCKzNpSG51ZTF6U1NHbU5PT0NoMUdMSjdyVUtWd1YySHZpanBoR1FTMlVtaFVaZXdTOVZndnhZSWRncitmRzFBPT0iXSwKCiAgICAidHNsaWIiOiBbInRzbGliQDIuOC4xIiwgIiIsIHt9LCAic2hhNTEyLW9KRnU5NEhRYitLVmR1U1VRTDd3bnBtcW5mbUxzT0EvbkFoNmI2RUgwd0NFb0swL21QZVhVNmMzd0tEVjgzTWtPdUhQUkh0U1hLS1U5OUlCYXpTLzJ3PT0iXSwKCiAgICAidHlwZXNjcmlwdCI6IFsidHlwZXNjcmlwdEA1LjkuMyIsICIiLCB7ICJiaW4iOiB7ICJ0c2MiOiAiYmluL3RzYyIsICJ0c3NlcnZlciI6ICJiaW4vdHNzZXJ2ZXIiIH0gfSwgInNoYTUxMi1qbDF2WnpQRGluTHI5ZVV0M0ovdDdWNkZnTkV3OVFqdkJQZHlzejlLZlFERDQxZlFyQzJZNHZLUWRpYVVwRlQ0YlhsYjFSSGhMcHA4d3RtNk01VGdTdz09Il0sCgogICAgInVuZGljaS10eXBlcyI6IFsidW5kaWNpLXR5cGVzQDYuMjEuMCIsICIiLCB7fSwgInNoYTUxMi1pd0RacWcwUUFHcmc5UmF2NUg0bjBNNjRjM21rUjU5Y0o2d1FwKzdDNG5JMGdzbUV4YWVkYVlMTk80NGVUNEF0QkJ3amJUaUdQTWx0Mk1kMFQ5SDlKUT09Il0sCgogICAgInVzZS1zeW5jLWV4dGVybmFsLXN0b3JlIjogWyJ1c2Utc3luYy1leHRlcm5hbC1zdG9yZUAxLjYuMCIsICIiLCB7ICJwZWVyRGVwZW5kZW5jaWVzIjogeyAicmVhY3QiOiAiXjE2LjguMCB8fCBeMTcuMC4wIHx8IF4xOC4wLjAgfHwgXjE5LjAuMCIgfSB9LCAic2hhNTEyLVBwNkdTd0dQL05yUElyeFZGQUlrT1FleXc4bEZlbk9IaWpRV2tVVHJEdnJGNEFMcXlsUDJDL0tDa2VTOWRwVU0zS3ZZUlFobmE1dnQ3SUw5NStaUTl3PT0iXSwKCiAgICAidml0ZSI6IFsidml0ZUA4LjAuMTMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAibGlnaHRuaW5nY3NzIjogIl4xLjMyLjAiLCAicGljb21hdGNoIjogIl40LjAuNCIsICJwb3N0Y3NzIjogIl44LjUuMTQiLCAicm9sbGRvd24iOiAiMS4wLjEiLCAidGlueWdsb2JieSI6ICJeMC4yLjE2IiB9LCAib3B0aW9uYWxEZXBlbmRlbmNpZXMiOiB7ICJmc2V2ZW50cyI6ICJ+Mi4zLjMiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL25vZGUiOiAiXjIwLjE5LjAgfHwgPj0yMi4xMi4wIiwgIkB2aXRlanMvZGV2dG9vbHMiOiAiXjAuMS4xOCIsICJlc2J1aWxkIjogIl4wLjI3LjAgfHwgXjAuMjguMCIsICJqaXRpIjogIj49MS4yMS4wIiwgImxlc3MiOiAiXjQuMC4wIiwgInNhc3MiOiAiXjEuNzAuMCIsICJzYXNzLWVtYmVkZGVkIjogIl4xLjcwLjAiLCAic3R5bHVzIjogIj49MC41NC44IiwgInN1Z2Fyc3MiOiAiXjUuMC4wIiwgInRlcnNlciI6ICJeNS4xNi4wIiwgInRzeCI6ICJeNC44LjEiLCAieWFtbCI6ICJeMi40LjIiIH0sICJvcHRpb25hbFBlZXJzIjogWyJAdHlwZXMvbm9kZSIsICJAdml0ZWpzL2RldnRvb2xzIiwgImVzYnVpbGQiLCAiaml0aSIsICJsZXNzIiwgInNhc3MiLCAic2Fzcy1lbWJlZGRlZCIsICJzdHlsdXMiLCAic3VnYXJzcyIsICJ0ZXJzZXIiLCAidHN4IiwgInlhbWwiXSwgImJpbiI6IHsgInZpdGUiOiAiYmluL3ZpdGUuanMiIH0gfSwgInNoYTUxMi1NRnRqQllnem1TeG1nQTRSQWZqSXlYV3BHZTFvQUxuamdVVHp6VjdRTHgvVEt4Q3pqdE1INkZkOS9lVksrNUZnMXFOb3o1VkF3c21Ncy9Ob2ZybUp2dz09Il0sCgogICAgInZpdGVzdCI6IFsidml0ZXN0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvZXhwZWN0IjogIjQuMS42IiwgIkB2aXRlc3QvbW9ja2VyIjogIjQuMS42IiwgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6ICI0LjEuNiIsICJAdml0ZXN0L3J1bm5lciI6ICI0LjEuNiIsICJAdml0ZXN0L3NuYXBzaG90IjogIjQuMS42IiwgIkB2aXRlc3Qvc3B5IjogIjQuMS42IiwgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAiZXMtbW9kdWxlLWxleGVyIjogIl4yLjAuMCIsICJleHBlY3QtdHlwZSI6ICJeMS4zLjAiLCAibWFnaWMtc3RyaW5nIjogIl4wLjMwLjIxIiwgIm9idWciOiAiXjIuMS4xIiwgInBhdGhlIjogIl4yLjAuMyIsICJwaWNvbWF0Y2giOiAiXjQuMC4zIiwgInN0ZC1lbnYiOiAiXjQuMC4wLXJjLjEiLCAidGlueWJlbmNoIjogIl4yLjkuMCIsICJ0aW55ZXhlYyI6ICJeMS4wLjIiLCAidGlueWdsb2JieSI6ICJeMC4yLjE1IiwgInRpbnlyYWluYm93IjogIl4zLjEuMCIsICJ2aXRlIjogIl42LjAuMCB8fCBeNy4wLjAgfHwgXjguMC4wIiwgIndoeS1pcy1ub2RlLXJ1bm5pbmciOiAiXjIuMy4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBlZGdlLXJ1bnRpbWUvdm0iOiAiKiIsICJAb3BlbnRlbGVtZXRyeS9hcGkiOiAiXjEuOS4wIiwgIkB0eXBlcy9ub2RlIjogIl4yMC4wLjAgfHwgXjIyLjAuMCB8fCA+PTI0LjAuMCIsICJAdml0ZXN0L2Jyb3dzZXItcGxheXdyaWdodCI6ICI0LjEuNiIsICJAdml0ZXN0L2Jyb3dzZXItcHJldmlldyI6ICI0LjEuNiIsICJAdml0ZXN0L2Jyb3dzZXItd2ViZHJpdmVyaW8iOiAiNC4xLjYiLCAiQHZpdGVzdC9jb3ZlcmFnZS1pc3RhbmJ1bCI6ICI0LjEuNiIsICJAdml0ZXN0L2NvdmVyYWdlLXY4IjogIjQuMS42IiwgIkB2aXRlc3QvdWkiOiAiNC4xLjYiLCAiaGFwcHktZG9tIjogIioiLCAianNkb20iOiAiKiIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkBlZGdlLXJ1bnRpbWUvdm0iLCAiQG9wZW50ZWxlbWV0cnkvYXBpIiwgIkB0eXBlcy9ub2RlIiwgIkB2aXRlc3QvYnJvd3Nlci1wbGF5d3JpZ2h0IiwgIkB2aXRlc3QvYnJvd3Nlci1wcmV2aWV3IiwgIkB2aXRlc3QvYnJvd3Nlci13ZWJkcml2ZXJpbyIsICJAdml0ZXN0L2NvdmVyYWdlLWlzdGFuYnVsIiwgIkB2aXRlc3QvY292ZXJhZ2UtdjgiLCAiQHZpdGVzdC91aSIsICJoYXBweS1kb20iLCAianNkb20iXSwgImJpbiI6IHsgInZpdGVzdCI6ICJ2aXRlc3QubWpzIiB9IH0sICJzaGE1MTItNmx2amJTM3A5YjRDcmRDbWd1emJoMi80dW9YaEdFMnE3MVI0T1g1c3FGOVIxYm85WGQ2ZkdyTUFmdnA1d25DemxCbkZWZENPcDZvbnVUUVZibzhpVVE9PSJdLAoKICAgICJ3aHktaXMtbm9kZS1ydW5uaW5nIjogWyJ3aHktaXMtbm9kZS1ydW5uaW5nQDIuMy4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInNpZ2luZm8iOiAiXjIuMC4wIiwgInN0YWNrYmFjayI6ICIwLjAuMiIgfSwgImJpbiI6IHsgIndoeS1pcy1ub2RlLXJ1bm5pbmciOiAiY2xpLmpzIiB9IH0sICJzaGE1MTItaFVybWFXQmRWRGN4dllxbnloMDl6dW5LelJPV2piWlRpTnk4ZEJFamtTN2VoRURRaWJYSjdYdmxtdGJ3dVRjbFVpSXlOK0N5WFFENFZta284Zk5tOHc9PSJdLAoKICAgICJ3cmFwLWFuc2kiOiBbIndyYXAtYW5zaUA3LjAuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJhbnNpLXN0eWxlcyI6ICJeNC4wLjAiLCAic3RyaW5nLXdpZHRoIjogIl40LjEuMCIsICJzdHJpcC1hbnNpIjogIl42LjAuMCIgfSB9LCAic2hhNTEyLVlWR0lqMmthbUxTVHh3Nk5zWmpvQnhmU3dzbjB5Y2Rlc21jNHArUTIxYzV6UHVaMXBsK05meFZkeFB0ZEh2bU5WT1E2WFNZRzRBVXR5dC9GaTdEMTZRPT0iXSwKCiAgICAieTE4biI6IFsieTE4bkA1LjAuOCIsICIiLCB7fSwgInNoYTUxMi0wcGZGemVnZURXSkhKSUFtVExSUDJEd0hqZEY1czdqbzl0dXp0ZFF4QWhJTkNkdlMrM25HSU5xUGQwMEFwaHFKUi8wTGhBTlVTNi8rN1NDYjk4WU9mQT09Il0sCgogICAgInlhbWwiOiBbInlhbWxAMi45LjAiLCAiIiwgeyAiYmluIjogeyAieWFtbCI6ICJiaW4ubWpzIiB9IH0sICJzaGE1MTItMkF2aE5YM21iOHpkNlp5N0lOVHRTcGwxRjE1SFc2V25xajBzcldsa0tMY3BZbC9nTUlNSml5dUdxMktlSTJZRnhVUGpkbEIrM0xjMTBzZU1MdEw0Y0E9PSJdLAoKICAgICJ5YXJncyI6IFsieWFyZ3NAMTcuNy4yIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImNsaXVpIjogIl44LjAuMSIsICJlc2NhbGFkZSI6ICJeMy4xLjEiLCAiZ2V0LWNhbGxlci1maWxlIjogIl4yLjAuNSIsICJyZXF1aXJlLWRpcmVjdG9yeSI6ICJeMi4xLjEiLCAic3RyaW5nLXdpZHRoIjogIl40LjIuMyIsICJ5MThuIjogIl41LjAuNSIsICJ5YXJncy1wYXJzZXIiOiAiXjIxLjEuMSIgfSB9LCAic2hhNTEyLTdkU3p6UlErK0NLbk5JL2tyS25ZUlY3SktLUFVYTUVoNjFzb2FIS2c5bXJXRWh6RldoRm54UHhHbCs2OWNEMU91NjNDMTNOVVBDbm1JY3J2cUN1TTZ3PT0iXSwKCiAgICAieWFyZ3MtcGFyc2VyIjogWyJ5YXJncy1wYXJzZXJAMjEuMS4xIiwgIiIsIHt9LCAic2hhNTEyLXRWcHNKVzdEZGplY0FpRnBiSUIxZTNxeElRc0U2Tm9QYzUvZVRkcmJiSUM0aDBMVnNXaG5vYTNnK20ySGNsQkl1akh6c3haNFZKVkErR1V1YzIvTEJ3PT0iXSwKCiAgICAiem9kIjogWyJ6b2RANC40LjMiLCAiIiwge30sICJzaGE1MTIteXRFTkZqSUpGbDJVd1lnbGRlMmpjaFcySHdtNEdKRkxEaVNYV2RUckpRQklOOUZjeXA3bjREaHhKRWlXTkFKTVYxL0JxV2ZXL2trZzcxVURjSEp5VFE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQGVtbmFwaS9jb3JlIjogWyJAZW1uYXBpL2NvcmVAMS4xMC4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvd2FzaS10aHJlYWRzIjogIjEuMi4xIiwgInRzbGliIjogIl4yLjQuMCIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTIteXE2T2tKNHA4MkNBZlBsMHU5bVFlYlFIS1BKa1k3V3JJdWsyMDVjVFluWWUrazJaOFlCaDExRnJiUkcvSDZpaGlycWNhY09nbDJCSU84b3lNUUxlWHc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQGVtbmFwaS9ydW50aW1lIjogWyJAZW1uYXBpL3J1bnRpbWVAMS4xMC4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRzbGliIjogIl4yLjQuMCIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItZXd2WWxrODZ4VW9HSTB6UVJOcS9tQysxNlIxUWVEbEtReTIxS2kzb1NZWE5nTGI0NUdWMVA2QTBNKy9zNm55Q3VORHFlNVZwYVk4NEJ6WEd3VmJ3RkE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQGVtbmFwaS93YXNpLXRocmVhZHMiOiBbIkBlbW5hcGkvd2FzaS10aHJlYWRzQDEuMi4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRzbGliIjogIl4yLjQuMCIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItdVRJSTdPWUYrL01lcy9NcmNJT1lwNXlPdFNNTEJXU0lvTFBwY2d3aXBvaUtibGk2azMyMnRjb0ZzeG9JSXhQRHFXMDFTUUdBZ2tvNEV6WmkyQk52Mnc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQG5hcGktcnMvd2FzbS1ydW50aW1lIjogWyJAbmFwaS1ycy93YXNtLXJ1bnRpbWVAMS4xLjQiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHR5YnlzL3dhc20tdXRpbCI6ICJeMC4xMC4xIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvY29yZSI6ICJeMS43LjEiLCAiQGVtbmFwaS9ydW50aW1lIjogIl4xLjcuMSIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItM05RTk5nQTFZU2xKYi9rTUgxaWxkQVNQOUhXNy83a1luUkkyc3pXSmFvZmFTMWhXbWJHSTRIK2QzKzIyYUd6WFhOOUlKK24rR2lGVmNHaXBKUDE4b3c9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQHR5YnlzL3dhc20tdXRpbCI6IFsiQHR5YnlzL3dhc20tdXRpbEAwLjEwLjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9LCAiYnVuZGxlZCI6IHRydWUgfSwgInNoYTUxMi1Sb0J2SjJYMHd1S2xXRklqcndmZkd3MUlxWkhLUXF6SWNoS2FhZFpaZm5OcHNBWXAybU0waDM2SnRQQ2pOREFIR2dZZXovMTV1TUJwZkd3Y2hoaU1nZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS13YXNtMzItd2FzaS90c2xpYiI6IFsidHNsaWJAMi44LjEiLCAiIiwgeyAiYnVuZGxlZCI6IHRydWUgfSwgInNoYTUxMi1vSkZ1OTRIUWIrS1ZkdVNVUUw3d25wbXFuZm1Mc09BL25BaDZiNkVIMHdDRW9LMC9tUGVYVTZjM3dLRFY4M01rT3VIUFJIdFNYS0tVOTlJQmF6Uy8ydz09Il0sCgogICAgImNoYWxrL3N1cHBvcnRzLWNvbG9yIjogWyJzdXBwb3J0cy1jb2xvckA3LjIuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJoYXMtZmxhZyI6ICJeNC4wLjAiIH0gfSwgInNoYTUxMi1xcENBdlJsOXN0dU9IdmVLc243SG5jSlJ2djUwMXFJYWNLelFsTy8rTHd4YzkrMHEyd0x5djREZnZ0ODAvRFBuMnBxT0JzSmREaW9nWEdSOStPdndSdz09Il0sCgogICAgIm5leHQvcG9zdGNzcyI6IFsicG9zdGNzc0A4LjQuMzEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAibmFub2lkIjogIl4zLjMuNiIsICJwaWNvY29sb3JzIjogIl4xLjAuMCIsICJzb3VyY2UtbWFwLWpzIjogIl4xLjAuMiIgfSB9LCAic2hhNTEyLVBTMDhJYm9pYTltdHMvMnlnVjNlTHBZNWdoblVjZkxWL0VYVE9XMUUycVl4SktHR0JVdE5qTjc2RllIbk1zMzZSbUFSbjQxYkMwQVptbityUjBPVnBRPT0iXSwKICB9Cn0K" }, { "path": "metadata.json", "kind": "text", "content": '{\n "id": "auto",\n "name": "Auto Parts",\n "tagline": "Auto-parts storefront with vehicle fitment finder and installation booking.",\n "industry": "automotive",\n "tags": ["automotive", "parts", "fitment"],\n "stability": "stable",\n "schemaType": "AutoPartsStore",\n "mock": {\n "seedName": "auto",\n "seedBusinessId": "bus_driveline_auto"\n }\n}\n' }, { "path": "next.config.ts", "kind": "text", "content": 'import type { NextConfig } from "next";\n\n// Same-origin proxy target for the storefront API. The public key\n// decides: a real `cpk_live_\u2026` / `cpk_test_\u2026` only resolves against\n// hosted Cimplify, so browser cart writes go to the same place the\n// server catalogue reads come from. Anything else (`mock-dev`, empty)\n// falls back to the local `cimplify dev` mock in dev.\nconst publicKey = process.env.NEXT_PUBLIC_CIMPLIFY_PUBLIC_KEY?.trim() ?? "";\nconst keyTargetsHostedCimplify =\n publicKey.startsWith("cpk_live_") || publicKey.startsWith("cpk_test_");\nconst STOREFRONT_URL =\n process.env.NODE_ENV === "production" || keyTargetsHostedCimplify\n ? "https://storefronts.cimplify.io"\n : "http://127.0.0.1:8787";\n\nif (STOREFRONT_URL === "http://127.0.0.1:8787") {\n console.warn(\n "[cimplify] next.config resolved the local storefront API URL; production deploys must run with NODE_ENV=production.",\n );\n}\n\n// Cache Components (\'use cache\' + cacheTag/cacheLife) require Node-specific\n// setTimeout atomicity and serialize a postponed state that routinely exceeds\n// CF Workers\' 128MB zlib limit. We\'re on Cloudflare Workers via opennext, so\n// we stay on Next 16\'s "Previous Model" \u2014 `fetch.next.{revalidate,tags}` via\n// the SDK\'s `cacheOptions`, plus `export const revalidate` per page. See\n// https://nextjs.org/docs/app/guides/caching-without-cache-components.\nconst nextConfig: NextConfig = {\n async redirects() {\n return [\n { source: "/login", destination: "/account", permanent: false },\n { source: "/signup", destination: "/account", permanent: false },\n ];\n },\n async rewrites() {\n return [\n { source: "/api/v1/:path*", destination: `${STOREFRONT_URL}/api/v1/:path*` },\n { source: "/img/:path*", destination: `${STOREFRONT_URL}/img/:path*` },\n { source: "/elements/:path*", destination: `${STOREFRONT_URL}/elements/:path*` },\n { source: "/_mock/:path*", destination: `${STOREFRONT_URL}/_mock/:path*` },\n ];\n },\n images: {\n loader: "custom",\n loaderFile: "./lib/cimplify-loader.ts",\n remotePatterns: [\n { protocol: "http", hostname: "127.0.0.1", port: "8787", pathname: "/img/**" },\n { protocol: "http", hostname: "localhost", port: "8787", pathname: "/img/**" },\n { protocol: "http", hostname: "localhost", port: "3000", pathname: "/img/**" },\n { protocol: "https", hostname: "loremflickr.com", pathname: "/**" },\n { protocol: "https", hostname: "images.unsplash.com", pathname: "/**" },\n { protocol: "https", hostname: "static-tmp.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "storefrontassetscdn.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "cdn.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "res.cloudinary.com", pathname: "/cimplify/**" },\n ],\n },\n};\n\nexport default nextConfig;\n' }, { "path": "CLAUDE.md", "kind": "text", "content": "# CLAUDE.md\n\nThis project was scaffolded from a Cimplify storefront template (`cimplify init`).\n\n## Read these first\n\n- **`AGENTS.md`** at the project root \u2014 the file \u2194 `brand.X` field map for *this template's* industry, plus the architectural rules.\n- **`.claude/skills/cimplify-storefront/SKILL.md`** \u2014 the playbook for common tasks (rebrand, add a section, wire a Server Action, deploy, eject a component). Invoke it whenever you're asked to change content, palette, copy, or routing.\n\n## The two-line summary\n\n1. **Edit `lib/brand.ts`** for any visible string.\n2. **Edit `app/globals.css` `@theme` block** for any palette / radius / font change.\n\nThat covers ~95% of what merchants ask for. For anything else, follow the `cimplify-storefront` skill.\n\n## Don't do\n\n- Hardcode strings in pages or components.\n- Enable `cacheComponents: true` in `next.config.ts` \u2014 we're on Cloudflare Workers, where `'use cache'` postponed state blows past CF's 128MB zlib limit. This template stays on Next 16's \"Previous Model\" (ISR): `export const revalidate` per page + `cacheOptions: { revalidate, tags }` on SDK reads.\n- Add `'use cache'`, `cacheTag`, or `cacheLife` anywhere. Use the SDK's `cacheOptions` instead.\n- Use `unstable_cache` \u2014 it's gone in Next 16. Use SDK `cacheOptions` or `fetch.next.{revalidate,tags}`.\n- Run `bun test` (Bun's `vi` shim is incomplete) \u2014 use `bun run test:run`.\n" }, { "path": "app/about/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `About \u2014 ${brand.name}`,\n description: brand.description,\n};\n\nexport default function AboutPage() {\n const a = brand.about;\n // Title supports a single \\n for a hard line break.\n const titleParts = a.title.split("\\n");\n return (\n <article className="max-w-3xl mx-auto px-6 sm:px-8 py-16">\n <p className="text-[11px] font-mono uppercase tracking-[0.16em] text-primary mb-2">\n {a.eyebrow}\n </p>\n <h1 className="text-[clamp(2.25rem,5vw,3.5rem)] font-bold mb-6 -tracking-[0.025em] leading-tight">\n {titleParts.map((line, i) => (\n <span key={i}>\n {line}\n {i < titleParts.length - 1 && <br />}\n </span>\n ))}\n </h1>\n <div className="prose prose-lg max-w-none space-y-5 text-foreground/90 leading-relaxed">\n {a.paragraphs.map((p, i) => (\n <p key={i}>{p}</p>\n ))}\n {a.sections.map((s) => (\n <div key={s.heading}>\n <h2 className="text-2xl font-semibold mt-10 mb-3 -tracking-[0.02em]">\n {s.heading}\n </h2>\n <p>{s.body}</p>\n </div>\n ))}\n </div>\n </article>\n );\n}\n' }, { "path": "app/llms.txt/route.ts", "kind": "text", "content": 'import { getServerClient, tags, type Product } from "@cimplify/sdk/server";\nimport { brand } from "@/lib/brand";\nimport { getSiteUrl } from "@/lib/site-url";\n\nexport const revalidate = 3600;\n\nasync function buildLlmsTxt(SITE_URL: string): Promise<string> {\n const client = getServerClient();\n const [productsRes, categoriesRes, collectionsRes] = await Promise.all([\n client.catalogue.getProducts(\n { limit: 500 },\n { cacheOptions: { revalidate: 3600, tags: [tags.products()] } },\n ),\n client.catalogue.getCategories({\n cacheOptions: { revalidate: 3600, tags: [tags.categories()] },\n }),\n client.catalogue.getCollections({\n cacheOptions: { revalidate: 3600, tags: [tags.collections()] },\n }),\n ]);\n\n const products: Product[] = productsRes.ok ? productsRes.value.items : [];\n const categories = categoriesRes.ok ? categoriesRes.value : [];\n const collections = collectionsRes.ok ? collectionsRes.value : [];\n\n const lines: string[] = [];\n lines.push(`# ${brand.name}`);\n lines.push("");\n lines.push(`> ${brand.llms.summary}`);\n lines.push("");\n lines.push("## Browse");\n lines.push(`- [Home](${SITE_URL}/)`);\n lines.push(`- [Shop](${SITE_URL}/shop): Full catalogue with filter and sort.`);\n\n if (categories.length > 0) {\n lines.push("");\n lines.push("## Categories");\n for (const c of categories) {\n lines.push(\n `- [${c.name}](${SITE_URL}/categories/${c.slug})${c.description ? `: ${c.description}` : ""}`,\n );\n }\n }\n\n if (collections.length > 0) {\n lines.push("");\n lines.push("## Collections");\n for (const c of collections) {\n lines.push(\n `- [${c.name}](${SITE_URL}/collections/${c.slug})${c.description ? `: ${c.description}` : ""}`,\n );\n }\n }\n\n if (products.length > 0) {\n lines.push("");\n lines.push("## Products");\n for (const p of products) {\n const slug = p.slug ?? p.id;\n const price = `${brand.currency} ${p.default_price}`;\n const desc = p.description ? ` \u2014 ${p.description.replace(/\\s+/g, " ").slice(0, 200)}` : "";\n lines.push(`- [${p.name}](${SITE_URL}/products/${slug}) (${price})${desc}`);\n }\n }\n\n lines.push("");\n lines.push("## Information");\n lines.push(`- [About](${SITE_URL}/about)`);\n lines.push(`- [Support / FAQ](${SITE_URL}/faq)`);\n lines.push(`- [Terms of Service](${SITE_URL}/terms)`);\n lines.push(`- [Privacy Policy](${SITE_URL}/privacy)`);\n lines.push(`- [Sitemap (XML)](${SITE_URL}/sitemap.xml)`);\n lines.push("");\n lines.push("## Contact");\n lines.push(`- Email: ${brand.contact.email}`);\n lines.push(`- Phone: ${brand.contact.phone}`);\n lines.push(`- Address: ${brand.contact.address}`);\n\n return lines.join("\\n") + "\\n";\n}\n\n/**\n * `/llms.txt` \u2014 machine-readable site index for LLMs (per llmstxt.org).\n * Lets coding agents and chat assistants find products, categories, and\n * support pages without scraping HTML. Plain Markdown so it streams cheaply\n * into context windows.\n */\nexport async function GET(): Promise<Response> {\n const body = await buildLlmsTxt(await getSiteUrl());\n return new Response(body, {\n headers: {\n "Content-Type": "text/plain; charset=utf-8",\n "Cache-Control": "public, max-age=0, s-maxage=3600, stale-while-revalidate=86400",\n },\n });\n}\n' }, { "path": "app/contact/contact-form.tsx", "kind": "text", "content": `"use client";
|
|
3840
3840
|
|
|
3841
3841
|
import { useState } from "react";
|
|
3842
3842
|
|
|
@@ -4415,7 +4415,7 @@ export const brand: Brand = {
|
|
|
4415
4415
|
* the root layout prerenderable.
|
|
4416
4416
|
*/
|
|
4417
4417
|
export const SITE_URL = "https://example.com";
|
|
4418
|
-
` }, { "path": "lib/site-url.ts", "kind": "text", "content": 'import { SITE_URL } from "./site.config";\n\n/** Canonical absolute URL for this storefront. */\nexport async function getSiteUrl(): Promise<string> {\n return SITE_URL;\n}\n' }, { "path": "lib/cimplify-loader.ts", "kind": "text", "content": 'import type { ImageLoader } from "next/image";\n\nimport { assetUrl, isCimplifyAsset } from "@cimplify/sdk";\n\nconst cdnBase = process.env.NEXT_PUBLIC_CIMPLIFY_CDN_URL?.trim() || undefined;\n\nconst cimplifyImageLoader: ImageLoader = ({ src, width, quality }) => {\n if (isCimplifyAsset(src, cdnBase)) {\n return assetUrl(src, {\n base: cdnBase,\n w: width,\n quality,\n format: "auto",\n });\n }\n return src;\n};\n\nexport default cimplifyImageLoader;\n' }, { "path": "lib/cart.ts", "kind": "text", "content": '"use client";\n\nimport { useCart } from "@cimplify/sdk/react";\n\n/**\n * Reactive cart count for the header pill. Subscribes to the SDK cart\n * state \u2014 updates immediately on add / remove / quantity change.\n */\nexport function useCartCount(): { count: number } {\n const { itemCount } = useCart();\n return { count: itemCount };\n}\n' }, { "path": ".gitignore", "kind": "text", "content": "node_modules\n.next\n.open-next\nout\n.env\n.env.local\n.env*.local\n.DS_Store\n*.tsbuildinfo\nnext-env.d.ts\n" }, { "path": "package.json", "kind": "text", "content": '{\n "name": "__STOREFRONT_NAME__",\n "private": true,\n "version": "0.0.0",\n "scripts": {\n "dev": "concurrently -k -n mock,next -c blue,magenta \\"cimplify-mock --seed grocery --quiet\\" \\"next dev\\"",\n "dev:storefront": "next dev",\n "dev:mock": "cimplify-mock --seed grocery",\n "build": "next build",\n "start": "next start",\n "typecheck": "tsc --noEmit",\n "test": "vitest",\n "test:run": "vitest run",\n "check:brand": "vitest run __tests__/brand.test.ts",\n "check:cart": "vitest run __tests__/cart-flow.test.ts",\n "check:contract": "vitest run __tests__/contract.test.ts",\n "check": "bun run typecheck && bun run test:run"\n },\n "dependencies": {\n "@cimplify/sdk": "^0.56.0",\n "next": "^16.2.6",\n "react": "^19.0.0",\n "react-dom": "^19.0.0"\n },\n "devDependencies": {\n "@tailwindcss/postcss": "^4.2.4",\n "@types/node": "^22.10.0",\n "@types/react": "^19.0.0",\n "@types/react-dom": "^19.0.0",\n "concurrently": "^9.0.0",\n "tailwindcss": "^4.2.4",\n "typescript": "^5.9.3",\n "vitest": "^4.1.5"\n }\n}\n' }, { "path": "bun.lock", "kind": "binary", "content": "ewogICJsb2NrZmlsZVZlcnNpb24iOiAxLAogICJjb25maWdWZXJzaW9uIjogMSwKICAid29ya3NwYWNlcyI6IHsKICAgICIiOiB7CiAgICAgICJuYW1lIjogIl9fU1RPUkVGUk9OVF9OQU1FX18iLAogICAgICAiZGVwZW5kZW5jaWVzIjogewogICAgICAgICJAY2ltcGxpZnkvc2RrIjogIl4wLjU0LjAiLAogICAgICAgICJuZXh0IjogIl4xNi4yLjYiLAogICAgICAgICJyZWFjdCI6ICJeMTkuMC4wIiwKICAgICAgICAicmVhY3QtZG9tIjogIl4xOS4wLjAiLAogICAgICB9LAogICAgICAiZGV2RGVwZW5kZW5jaWVzIjogewogICAgICAgICJAdGFpbHdpbmRjc3MvcG9zdGNzcyI6ICJeNC4yLjQiLAogICAgICAgICJAdHlwZXMvbm9kZSI6ICJeMjIuMTAuMCIsCiAgICAgICAgIkB0eXBlcy9yZWFjdCI6ICJeMTkuMC4wIiwKICAgICAgICAiQHR5cGVzL3JlYWN0LWRvbSI6ICJeMTkuMC4wIiwKICAgICAgICAiY29uY3VycmVudGx5IjogIl45LjAuMCIsCiAgICAgICAgInRhaWx3aW5kY3NzIjogIl40LjIuNCIsCiAgICAgICAgInR5cGVzY3JpcHQiOiAiXjUuOS4zIiwKICAgICAgICAidml0ZXN0IjogIl40LjEuNSIsCiAgICAgIH0sCiAgICB9LAogIH0sCiAgInBhY2thZ2VzIjogewogICAgIkBhbGxvYy9xdWljay1scnUiOiBbIkBhbGxvYy9xdWljay1scnVANS4yLjAiLCAiIiwge30sICJzaGE1MTItVXJjQUJCKzRiVXJGQUJ3Ymx1VElCRXJYd3Zic1UvVjdUWldmbWJnSmZia3dpQnV6aVM5Z3hkT0RVeXVpZWNmZEdRODVqZ2xNVzZqdVMzK3o1VHNLTHc9PSJdLAoKICAgICJAYmFiZWwvcnVudGltZSI6IFsiQGJhYmVsL3J1bnRpbWVANy4yOS4yIiwgIiIsIHt9LCAic2hhNTEyLUppRFNoSDQ1ektIV3lHZTRaTlZSckNqQno4Tmg5VE1tWkcxa2g0UVRLOGhDQlRXQmk4RGEraTdzMWZKdzcvbFlwTTRjY2VwU05mcXpaL1F2QUJCaTVnPT0iXSwKCiAgICAiQGJhc2UtdWkvcmVhY3QiOiBbIkBiYXNlLXVpL3JlYWN0QDEuNS4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBiYWJlbC9ydW50aW1lIjogIl43LjI5LjIiLCAiQGJhc2UtdWkvdXRpbHMiOiAiMC4yLjkiLCAiQGZsb2F0aW5nLXVpL3JlYWN0LWRvbSI6ICJeMi4xLjgiLCAiQGZsb2F0aW5nLXVpL3V0aWxzIjogIl4wLjIuMTEiLCAidXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUiOiAiXjEuNi4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBkYXRlLWZucy90eiI6ICJeMS4yLjAiLCAiQHR5cGVzL3JlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgImRhdGUtZm5zIjogIl40LjAuMCIsICJyZWFjdCI6ICJeMTcgfHwgXjE4IHx8IF4xOSIsICJyZWFjdC1kb20iOiAiXjE3IHx8IF4xOCB8fCBeMTkiIH0sICJvcHRpb25hbFBlZXJzIjogWyJAZGF0ZS1mbnMvdHoiLCAiQHR5cGVzL3JlYWN0IiwgImRhdGUtZm5zIl0gfSwgInNoYTUxMi16MWdTQWxjZWQxeVkraU0rbUhERXRJa0Q4VUkzRWJzNTJNdUJQeHZWNmY1aFJ1dGsreHZDSC93dUI3aERxRHpLOUpHNUZvTXo1bmhycXRTczF3anQxQT09Il0sCgogICAgIkBiYXNlLXVpL3V0aWxzIjogWyJAYmFzZS11aS91dGlsc0AwLjIuOSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYmFiZWwvcnVudGltZSI6ICJeNy4yOS4yIiwgIkBmbG9hdGluZy11aS91dGlscyI6ICJeMC4yLjExIiwgInJlc2VsZWN0IjogIl41LjEuMSIsICJ1c2Utc3luYy1leHRlcm5hbC1zdG9yZSI6ICJeMS42LjAiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL3JlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgInJlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgInJlYWN0LWRvbSI6ICJeMTcgfHwgXjE4IHx8IF4xOSIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkB0eXBlcy9yZWFjdCJdIH0sICJzaGE1MTIteC9QRERDWXpvcVBwanJkeWIzVmN5eWxUSTJJalVYRXRZREdpNWZvaDdLc25tTkpJSWFWd0EyR0xnREgxZHBzMUdnWGlKYkE2MGhNK0F5dVRmUXpJdnc9PSJdLAoKICAgICJAY2ltcGxpZnkvc2RrIjogWyJAY2ltcGxpZnkvc2RrQDAuNTQuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYmFzZS11aS9yZWFjdCI6ICJeMS40LjEiLCAiY2xzeCI6ICJeMi4xLjEiLCAiZGF0ZS1mbnMiOiAiXjQuMS4wIiwgImxpYnBob25lbnVtYmVyLWpzIjogIjEuMTIuNDEiLCAicmVhY3QtZGF5LXBpY2tlciI6ICJeOS4xNC4wIiwgInRhaWx3aW5kLW1lcmdlIjogIl4zLjUuMCIsICJ6b2QiOiAiXjQuNC4zIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBwYXlzdGFjay9pbmxpbmUtanMiOiAiXjIuMjIuOCIsICJtc3ciOiAiPj0yLjAuMCIsICJyZWFjdCI6ICI+PTE3LjAuMCIsICJ2aXRlc3QiOiAiPj0yLjAuMCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkBwYXlzdGFjay9pbmxpbmUtanMiLCAibXN3IiwgInJlYWN0IiwgInZpdGVzdCJdLCAiYmluIjogeyAiY2ltcGxpZnktbW9jayI6ICJkaXN0L21vY2svY2xpLm1qcyIgfSB9LCAic2hhNTEyLVlVTi9sT3FWaUhjaTF2OVVTV1d3QVd0eTI5cEVYQmRMVHVLYXJTbDhFcGFmV2g1amtkR1oxUStOZTkvYmZnVFptUjhpVFVsdEE4VTdnbFYyRm9SU2dnPT0iXSwKCiAgICAiQGRhdGUtZm5zL3R6IjogWyJAZGF0ZS1mbnMvdHpAMS40LjEiLCAiIiwge30sICJzaGE1MTItUDVMVU5odGJqNllmSTNpSmp3NUVMOWVVQUc2T2l0RDBXM2ZXUWNwUWpEUmMvUUlzTDB0Uk51TzFQY0R2UGNjV0wxZlNUWFhkRTFkcytsOTVEVi9PRkE9PSJdLAoKICAgICJAZW1uYXBpL2NvcmUiOiBbIkBlbW5hcGkvY29yZUAxLjEwLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGVtbmFwaS93YXNpLXRocmVhZHMiOiAiMS4yLjEiLCAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTIteXE2T2tKNHA4MkNBZlBsMHU5bVFlYlFIS1BKa1k3V3JJdWsyMDVjVFluWWUrazJaOFlCaDExRnJiUkcvSDZpaGlycWNhY09nbDJCSU84b3lNUUxlWHc9PSJdLAoKICAgICJAZW1uYXBpL3J1bnRpbWUiOiBbIkBlbW5hcGkvcnVudGltZUAxLjEwLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTItZXd2WWxrODZ4VW9HSTB6UVJOcS9tQysxNlIxUWVEbEtReTIxS2kzb1NZWE5nTGI0NUdWMVA2QTBNKy9zNm55Q3VORHFlNVZwYVk4NEJ6WEd3VmJ3RkE9PSJdLAoKICAgICJAZW1uYXBpL3dhc2ktdGhyZWFkcyI6IFsiQGVtbmFwaS93YXNpLXRocmVhZHNAMS4yLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTItdVRJSTdPWUYrL01lcy9NcmNJT1lwNXlPdFNNTEJXU0lvTFBwY2d3aXBvaUtibGk2azMyMnRjb0ZzeG9JSXhQRHFXMDFTUUdBZ2tvNEV6WmkyQk52Mnc9PSJdLAoKICAgICJAZXNidWlsZC9haXgtcHBjNjQiOiBbIkBlc2J1aWxkL2FpeC1wcGM2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYWl4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi0xVkNJQ1d5cGVRS2hWYkU5b1cvc0phQW1qTHhoVnFhY2RrdlBMRWp3bHR0amZ3RU5SU0NsUzhFakJ6MEt6UnlGU0NQRElrdVhXMzRKZS92azd6ZEI3UT09Il0sCgogICAgIkBlc2J1aWxkL2FuZHJvaWQtYXJtIjogWyJAZXNidWlsZC9hbmRyb2lkLWFybUAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtIiB9LCAic2hhNTEyLVFOZFFFcHM3RGZGd0UzaFhpVTRCWmVPVjY4SEh6WXdHZDBOdGhoZDN1Q2trRUtLNy9SNk1UZ00wUDdIN0ZBczVwVS9ESVdzdmlNbUVHeEVveElaK1pRPT0iXSwKCiAgICAiQGVzYnVpbGQvYW5kcm9pZC1hcm02NCI6IFsiQGVzYnVpbGQvYW5kcm9pZC1hcm02NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItYkJ5NjlwZ2ZoTUd0Q253cEMveDVRaGZ4QXovY0JnUTllbmJ0d2pmNlY5bG5QSS9oTXlUOWlXcFIxYXJtMGwza3R0VHI0TDBLU0xwS21McC9pbEtTOUE9PSJdLAoKICAgICJAZXNidWlsZC9hbmRyb2lkLXg2NCI6IFsiQGVzYnVpbGQvYW5kcm9pZC14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImFuZHJvaWQiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1UVmhkVnRRSUZ1VnBJSVIyODJidGNHQzJvR1FvU2ZaZm1CZFRpcDJhbkNhVlljcVdsWlhHY2RjS0lVa2xmWDJ3ajBKa2xOWWd6MzlPQnFoMmNxWHZjUT09Il0sCgogICAgIkBlc2J1aWxkL2Rhcndpbi1hcm02NCI6IFsiQGVzYnVpbGQvZGFyd2luLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVkxZ2lDZk00bmxIRFdFZlNja016ZVdOZFFTMzFCUUdzOS9yb3V3NlViOTF0a0s3OWFJTVRIM3E5eEh2ekg4ZDB3RHJ1NUNpMGtXQjhiM3VwL25sMTZnPT0iXSwKCiAgICAiQGVzYnVpbGQvZGFyd2luLXg2NCI6IFsiQGVzYnVpbGQvZGFyd2luLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiZGFyd2luIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItQ0pzcnk4WkdNNVZGVmV5VVlCM2NkS3BkL0g2OVBZZXo0ZUpoMVcvdDM4dnp1dGRqRWp0UDdoQjZlTEtCb09keGNBbEN0RVlIelEvUEovb1U5STR1MEE9PSJdLAoKICAgICJAZXNidWlsZC9mcmVlYnNkLWFybTY0IjogWyJAZXNidWlsZC9mcmVlYnNkLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi15WXErMzlObFRSelUyWG1vUFc0bDVJZnBsOWZxU2swbkFKWU0vVi9XVUdQRUZmZWsxZXBMSEpJa1RRTTZiQnMxc3dBcGpPNW5XZ3ZyODQzZzZUanh1UT09Il0sCgogICAgIkBlc2J1aWxkL2ZyZWVic2QteDY0IjogWyJAZXNidWlsZC9mcmVlYnNkLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiZnJlZWJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLTBGZ3ZPSjZVVU1mbHNIU1BMemRmRG5uQkJWb0NEdEJUVnluL01yV2xvVU52cS81U0ZtaDEzbDNkdmdSUGtEaWhSeGI3N1kxN01icWJDQWEyc3RyTVFRPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtYXJtIjogWyJAZXNidWlsZC9saW51eC1hcm1AMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTIta3JvNGMwUDg1R01mRllxVzRUV09wdm1GOHJGU2hiV0duckxxbHpwNFgxVE5XalJZM0pNWVVmREN0T3hQS09JWThCMFdDOEhONTFoR1A0STRoejRBYVE9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1hcm02NCI6IFsiQGVzYnVpbGQvbGludXgtYXJtNjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi0rODlVc1FUZlhkbWpJdlpTNm5Vbk9PTG9YbmtVVEI5aFI1UUFlTHJRZHpPU1dadk5TQVhBdGNSREhXdHFBVXRBbXY3Wk0xV1BPT2VTeER6enpNb2dpUT09Il0sCgogICAgIkBlc2J1aWxkL2xpbnV4LWlhMzIiOiBbIkBlc2J1aWxkL2xpbnV4LWlhMzJAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJpYTMyIiB9LCAic2hhNTEyLXlURWpvYXB5OFVQM3J2OGRCMGlwM0FmTXBSYnloU04zK2hZOG1vL2k0UVhGZUR4bWlZYkVLcDNaUmpCS2NPUDg2MlVhNGIxUERmd2x2YnV3WTdoSUdRPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtbG9vbmc2NCI6IFsiQGVzYnVpbGQvbGludXgtbG9vbmc2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItTmVxcVlrcmNHekZ3aTZDR1JHTk1PaldHR1NZT3Bxd0NqUzlmdmFVbFg1czN6d090bjFxd2cxczJpRTJzdkJlNFEvWU9HMXE2ODc1bGNBb1FLL0Y0VkE9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1taXBzNjRlbCI6IFsiQGVzYnVpbGQvbGludXgtbWlwczY0ZWxAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJub25lIiB9LCAic2hhNTEyLUljdlRsRjlkdExyZkwvTThXZ05JL3FKWUJFTlAzZWtnc0hiWVVJekV6cTVYSnp6VkVWL2ZYWTlXRlBmRUVYbXUzY2sycUpQOExHL3AzUThmN1pjMlhnPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtcHBjNjQiOiBbIkBlc2J1aWxkL2xpbnV4LXBwYzY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAicHBjNjQiIH0sICJzaGE1MTItSE95MGFMVEpUVnRvVGVHWmg0SFNYYU82TTk1cXU0azVsSmNINGd4djU2aWF5Y2Z6MVM4R08vNUpoNlg0WTFZaUkwaDdjUnlMaStIaXhNUis4OHN3YWc9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1yaXNjdjY0IjogWyJAZXNidWlsZC9saW51eC1yaXNjdjY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1pOEpVREF1ZnB6OWpPem80eUlTaENUY1h6UzA3dkVnV3p5WDNOSDJHN0xFRlZnckxFaGp3TDNhakZFNGZaSTNJNFpnaU03SkgzR1E3UmVPYlJPdlNVQT09Il0sCgogICAgIkBlc2J1aWxkL2xpbnV4LXMzOTB4IjogWyJAZXNidWlsZC9saW51eC1zMzkweEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogInMzOTB4IiB9LCAic2hhNTEyLWpGbnUrNlViTGx6SWpQUXBXQ05oNVF0cmNOZk1MamdJYXZud1BRQWZvR3g0cTE3b2NPVTlNc1EyUVZ2Rnh3UW9XcFpUOER2VExvb1R2bU9RWGtPNTFnPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgteDY0IjogWyJAZXNidWlsZC9saW51eC14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItNmUwY3ZYd3pPblZXSkhxK21za1A4RE5TcktCcjFiVUxCdm5GTHBjMUtZK2QraXJaU2daMDJUR3NlNUZzYWZLUzVqZzJlNHBidks2VFBYYUYvQTYrQ0E9PSJdLAoKICAgICJAZXNidWlsZC9uZXRic2QtYXJtNjQiOiBbIkBlc2J1aWxkL25ldGJzZC1hcm02NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibm9uZSIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItdlVua0JZeFpXNGhML2llOTFoU3FhU05qdWxPbllYRTFWU0x1c252SGcydTNqZXdKQnozWXpCOStvQ3c4REFCZVZxWkdnOTR0OXR5WkZvSG1hOGdXWlE9PSJdLAoKICAgICJAZXNidWlsZC9uZXRic2QteDY0IjogWyJAZXNidWlsZC9uZXRic2QteDY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJub25lIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItWEFnOHBJUW41Q3poT0I4b2RJY0FtNDJRc09mYTk4U0JlS1VkbzR4YThPdlg4TGJNWnFFdGdlV0U5UC9XeHQ3TWxHMlFxdmpHdGhzK25xNDhUclVpS3c9PSJdLAoKICAgICJAZXNidWlsZC9vcGVuYnNkLWFybTY0IjogWyJAZXNidWlsZC9vcGVuYnNkLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJvcGVuYnNkIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1DdDJXY0ZFQU5sRkR0cDFuVkFYU05CUER4eVUrajcrdElkLy9pSFhVMmYvbE41QW1PNHpMeWhEY3BSNUN6MXIwOG1WeHp0M0pweXQ0UG1YUTFPNis3QT09Il0sCgogICAgIkBlc2J1aWxkL29wZW5ic2QteDY0IjogWyJAZXNidWlsZC9vcGVuYnNkLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAib3BlbmJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLXhBR0doeU9ROU90bTFYdThOVDFpZkdMbkE2TTNzSnhaNml4eWxiK3ZJVVZ6dnZkNkdPQUxwd1FyWXJ0bFBvdU1xZC92U2JnZWh6NkhhVms0KzdBZmh3PT0iXSwKCiAgICAiQGVzYnVpbGQvc3Vub3MteDY0IjogWyJAZXNidWlsZC9zdW5vcy14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogInN1bm9zIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItTXcrdHp5NHBwNndaRUswK0x3cjc2cFdManJ0am1KeVVCMjN0SEtxRURQNzRSM3E5NWx1WS9iWHFYWmVZbDROWWx2d09xb1JLbEluUWlhbGdDS3k2N1E9PSJdLAoKICAgICJAZXNidWlsZC93aW4zMi1hcm02NCI6IFsiQGVzYnVpbGQvd2luMzItYXJtNjRAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1BVlVQNDI4VlFUU2RkZ3V6OWRPOW5nYitFNWFTY3lnN25PZUpEckYxSFBZdTU1NWdtemEzYkRHTVBobVZYTDhzdkRTb3FQQ3NDUGpiMjY1eUcva0xLUT09Il0sCgogICAgIkBlc2J1aWxkL3dpbjMyLWlhMzIiOiBbIkBlc2J1aWxkL3dpbjMyLWlhMzJAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJpYTMyIiB9LCAic2hhNTEyLWkxc1crMWkrb1d2UXpTZ2ZSY3h4RzJrNEk5bjNPOU5ScXk4VSt1dWdhVDJEeTdrTE85WTd3STcyaGFPYWh4Y2VNWDhoWkF6Z0dvdTFGaG5kUmxkeFJnPT0iXSwKCiAgICAiQGVzYnVpbGQvd2luMzIteDY0IjogWyJAZXNidWlsZC93aW4zMi14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItbk9UMnZaTnc2aEorejQzb1AxU1BlYS9HLzZBYk42WCtiR05oTnVxOE50Ukh5NHdzTWh3NzY1SUtMTm1uamVrN0d2aldCWVE4UTVWQm9ZVEZnOXkxVVE9PSJdLAoKICAgICJAZmxvYXRpbmctdWkvY29yZSI6IFsiQGZsb2F0aW5nLXVpL2NvcmVAMS43LjUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGZsb2F0aW5nLXVpL3V0aWxzIjogIl4wLjIuMTEiIH0gfSwgInNoYTUxMi0xSWg0V1RXeXcwK2xLeUZNY0JIR2JiNVU1RnR1SEp1dWpveXlyNXpUYVdTNUVZTWVUNkpiMkF1RGVmdHNDc0V1Y2hPK21NMmlqNStxOWNyaHlkekxoUT09Il0sCgogICAgIkBmbG9hdGluZy11aS9kb20iOiBbIkBmbG9hdGluZy11aS9kb21AMS43LjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGZsb2F0aW5nLXVpL2NvcmUiOiAiXjEuNy41IiwgIkBmbG9hdGluZy11aS91dGlscyI6ICJeMC4yLjExIiB9IH0sICJzaGE1MTItOWdaU0FJNVhNMzY4ODBQUE1tLy85ZGZpRW5nWW9DNkFtMml6RVMxRkY0MDZZRnNqdnlCTW1lSjJnNFNBanUzeFd3dHV5bk5SRkwyczloZ3hwTEk1U1E9PSJdLAoKICAgICJAZmxvYXRpbmctdWkvcmVhY3QtZG9tIjogWyJAZmxvYXRpbmctdWkvcmVhY3QtZG9tQDIuMS44IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBmbG9hdGluZy11aS9kb20iOiAiXjEuNy42IiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgInJlYWN0IjogIj49MTYuOC4wIiwgInJlYWN0LWRvbSI6ICI+PTE2LjguMCIgfSB9LCAic2hhNTEyLWNDNTJiSHdNL24vQ3hTODdGSDB5V2RuZ0VacmpkdExXL3FWcnVvNjhxZytwcks3WlE0WUdkdXQyR3lEVnBvR2VBWWUvaDg5OXJWZU9WbTZPaTQwazJBPT0iXSwKCiAgICAiQGZsb2F0aW5nLXVpL3V0aWxzIjogWyJAZmxvYXRpbmctdWkvdXRpbHNAMC4yLjExIiwgIiIsIHt9LCAic2hhNTEyLVJpQi95SWg3OHBjSXhsNmxMTUcwQ2dCWEFaMlkwZVZIcU1QWXVndSs5VTBBZVQ2WUJlaUpwZjdsYmRKTkl1Z0ZQNVNJandOUmdvNERoUjFReGkyNkdnPT0iXSwKCiAgICAiQGltZy9jb2xvdXIiOiBbIkBpbWcvY29sb3VyQDEuMS4wIiwgIiIsIHt9LCAic2hhNTEyLVRkNzZxN2o1N28vdExWZGdTNzQ2Y1lBUmZTeXhrOGlFZlJ4ZXdMOWg0T016WWhiVzRUQWNwcGwwbVQ0ZXlxWGRkaDZML2p3b003NW1vN2l4YS9wQ2VRPT0iXSwKCiAgICAiQGltZy9zaGFycC1kYXJ3aW4tYXJtNjQiOiBbIkBpbWcvc2hhcnAtZGFyd2luLWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiAiMS4yLjQiIH0sICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLWltdFEzV01KWGJNWTRmeGIvTmRwNkhCVE5WdFdDVUkwV2RvYnloZUdmNSthZDZ4WDhWSURPOHUyeEU0cWMvZnIwOENLRy83ZERzZUZ0bjZNNmcvcjN3PT0iXSwKCiAgICAiQGltZy9zaGFycC1kYXJ3aW4teDY0IjogWyJAaW1nL3NoYXJwLWRhcndpbi14NjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWRhcndpbi14NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1ZTkVGQUYvNEtRL1BlVzBOK3IrYVZWc29JWTAvcXh4aWtGMlNXZHArTlJrbU1CN3k5TEJaQVZxUTR5aEdDbS9IM0gyNzBPU3lrcW1RTUtMQmhCSkRFdz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjRAMS4yLjQiLCAiIiwgeyAib3MiOiAiZGFyd2luIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi16cWpqbzdSYXRGZkZvUDBNa1E1MWpmdUZaQm5WRTJwUmlheWRLSjFHL3JIWnZuc3JIQU9jUUFMSWk5c0E1Y281eGVuUWRUdWdDdnRiMWN1Zjc4VmY0Zz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4teDY0IjogWyJAaW1nL3NoYXJwLWxpYnZpcHMtZGFyd2luLXg2NEAxLjIuNCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi0xSU9kNXhmVmhsR3dYK3pYdjJOOTNrMHlNT052VWxBTnlsYkp3MWVUYWg4Sy9KdHBpMTVLQytXU2lhWC9uQm1ibTJIeFJNMWdaMG5TZGpTc3JaYkdLZz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm0iOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm1AMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybSIgfSwgInNoYTUxMi1iRkk3eGNLRkVMZGlOQ1ZvdjhlNDRJYTR1MmJ5QStsM1h0c0FqK1E4dGZDd082QlE4aURvallkdm9QTXFzS0RrdW9PbytYNkhaQTBzMHExMUFOTVE4QT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm02NCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybTY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1leGNqWDhEZnNJY0oxMHgxS3pyNFJjV2UxZWRDOVBxdURSUlB4M1lWQ3ZRditVNXA3WWluMnMzMmZ0emlrWG9qYjFQSUZjLzlNdDI4L3kraVJrbGtydz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1wcGM2NCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi1GTXV2R2lqTERZRzZsVytiL1V2eWlsVVd1NUF5dSszcjJkMVM4bm90aUdDSXlZVS83NmVpZzFVZk1ta1o3dndnT3J6S3psUWJGU3VRZmdtN0dZVVBwQT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1yaXNjdjY0IjogWyJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgtcmlzY3Y2NEAxLjIuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1vVkRiY1I0elVDMGNlODJ0ZXViU20reDZFVGl4dEtaQmgvcWJSRUlPY0kzY1VMekR5YjE4U3IvV2N5eDdOUlFlUXpPaUhUTmJaRkYxVXdQUzJzY3lHQT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1zMzkweCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXMzOTB4QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJzMzkweCIgfSwgInNoYTUxMi1xbXA5VnJ6Z1BnTW9HWnlQdnJRSHFrMDJ1eWpBMC9RclRPMjZUcWs2bDRaVjBNUFdJVzZMVGtxT0lvditKMXlFdTdNYkZRYURwd2R3SktoYkp2dVJ4UT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjRAMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi10SnhpaUxzbUhjOUF4MWJ6M29hT1lCVVJUWEdJUkRPREJxaHZlVkhvbnJISjkvK2s4OXFiTGwwYmNKbnMrZTR0NHJ2YU5CeGFFWnNGdFNmQWRxdVBydz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjRAMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLUZWUUh1d3gxSUl1Tm93OVFBYllVekorRW44S2NWbTlMazUrdUdVUUpIYVptTUVDWm1PbGl4OUhuSDduMVRSa1hNUzBwR3hJSm9rSVZCOVN1cVpHR1h3PT0iXSwKCiAgICAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4bXVzbC14NjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wteDY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItK0xweUJrN0w0NFpJWHd6L1ZZZmdsYVgvb2t4ZXpFU2M2VXhEU295bzJLczZKeGM0WTdzR2pwZ1U5czRQTWdxZ2pqMWdaQ3lsVGllTmFtcUExTUY3RGc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4LWFybSI6IFsiQGltZy9zaGFycC1saW51eC1hcm1AMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybSI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItOWRMcXN2d3RnMXV1WEJHWktzeGVtOTU5NSt1anYwc0o2Vmk4d2NUQU5TRnB3Vi9HT05hdDVlQ2t6UW8vMU82elJJa2gwbS84KzVCanJScjdqRFVTWnc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4LWFybTY0IjogWyJAaW1nL3NoYXJwLWxpbnV4LWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm02NCI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1iS1F6YUpSWS9ia1BPWHlLeDVFVnVwN3FrYW9qRUNHNk5MWXN3Z2t0T1pqYVhlY1NBZUNXaVp3d2lGZjMvWStPMUhyYXVpRTNGVnNHeEZnOGMyNHJaZz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGludXgtcHBjNjQiOiBbIkBpbWcvc2hhcnAtbGludXgtcHBjNjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0IjogIjEuMi40IiB9LCAib3MiOiAibGludXgiLCAiY3B1IjogInBwYzY0IiB9LCAic2hhNTEyLTd6em53TmFxVzZZdHNmckdHREE2QlJrSVNLQUFFMUpvMFFkcE5ZWE5NSHUyKzBkVHJQZmxUTE5rcGM4bDdNVVA1TTE2WkpjVXZ5c1ZXV3JNZWZacXVBPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eC1yaXNjdjY0IjogWyJAaW1nL3NoYXJwLWxpbnV4LXJpc2N2NjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXJpc2N2NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi01MWdKdUxQVEthN3BpWVBhVnM4R21CeW83L1U3LzdUWk9xK2NuWEpJSFpLYXZJUkhBUDc3ZTNOMkhFbDNkZ2lxZEQvdzB5VWZpSm5JSTc3UHVEREZkdz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGludXgtczM5MHgiOiBbIkBpbWcvc2hhcnAtbGludXgtczM5MHhAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXMzOTB4IjogIjEuMi40IiB9LCAib3MiOiAibGludXgiLCAiY3B1IjogInMzOTB4IiB9LCAic2hhNTEyLW5RdENrMFBkS2ZobzNlQzVNcmJRb2lnSjJnZDFDZ2RkVU1rYWJVaityQmV2czh0WjJjVUxPeDQ2RTdveVgrMDRXR2ZBQmdJd21NQzBWcWllVGlSNGpnPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eC14NjQiOiBbIkBpbWcvc2hhcnAtbGludXgteDY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLU1FemQ4SFBLeFZ4VmVud0FhK0pSUHdFQzdRRmpvUFd1UzVOWm5CdDZCM3B1N0VHMkdlMGlkMW9MSFpwUEpkbjNPUUsrQlFEaXc5elN0aUhCVEpRUVFRPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eG11c2wtYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGludXhtdXNsLWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItZnBySlI2R3RSc010Nkt5ZnE0NElzQ2hWWmVHTjk3Z1REMzMxd2VSMWV4MWMxcnlwREVBQk42VG0yeGExd0U2bFliNURkRW5rMDNOWlBxQTdJZDIxeWc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4bXVzbC14NjQiOiBbIkBpbWcvc2hhcnAtbGludXhtdXNsLXg2NEAwLjM0LjUiLCAiIiwgeyAib3B0aW9uYWxEZXBlbmRlbmNpZXMiOiB7ICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXhtdXNsLXg2NCI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSmc4d05UMU1Vekl2aEJGeFZpcXJFaFdER3pxeW1vM3NWN3o3WnNhV2JaTkRMWFJKWm9SR3JqdWxwNjBZWXRWNHdmWThWSUtjV2lkam9qbExjV3JkOFE9PSJdLAoKICAgICJAaW1nL3NoYXJwLXdhc20zMiI6IFsiQGltZy9zaGFycC13YXNtMzJAMC4zNC41IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvcnVudGltZSI6ICJeMS43LjAiIH0sICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1PZFdURWlWa1kyUEh3cWtiQkk4ZnJGeFFRRmVrSGFTU2tVSUprd3pjbFdaZTY0TzFYNFVsVWpxcXFMYVBiVXBNT1FrNkZCdS9IdGxHWE5ibElzMGh1dz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzItYXJtNjQiOiBbIkBpbWcvc2hhcnAtd2luMzItYXJtNjRAMC4zNC41IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1XUTNBZ1dDV1lTYjJ5dCtJRzhtbkM2SmRrOVdoczdPMGd4cGhibHNMdmRoU3BTVHRtdTY5WkcxR2tiNk51dnhzTkFDd2lQVjZjTlNaTnp0MEtQc3c3Zz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzItaWEzMiI6IFsiQGltZy9zaGFycC13aW4zMi1pYTMyQDAuMzQuNSIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAiaWEzMiIgfSwgInNoYTUxMi1GVjltLzdObWVDbVNIREQ1ajQrNHBOSThDcDNhVytKdkxvWGNUVW8wSXF5alNmQVpKOGRJVW1pangxcWFKc0lpVStIb3N3NnhNNUtpakFXUkpDU2dOZz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzIteDY0IjogWyJAaW1nL3NoYXJwLXdpbjMyLXg2NEAwLjM0LjUiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi0rMjlZTXNxWTIvOWVGRWlXOTNlcVdudUxjV2N1Zm93WGV3d1NOSVQ2VXdaZFVVQ3JNM29Gak1XSC9aNi9UTW1iNGhsRmVubWZBVmJwV2V1cDJqcnlDdz09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogWyJAanJpZGdld2VsbC9nZW4tbWFwcGluZ0AwLjMuMTMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjIjogIl4xLjUuMCIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjQiIH0gfSwgInNoYTUxMi0ya2t0LzduaUo2TWdFUHhGMGJZZFE2ZXRaYUErZlF2RGNMS2NraHkxeUlRT3phb0tqQkJqU2o2My9hTFZqWUUzcWhSdDVkdk0rdVV5ZkNnNlVLQ0JiQT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3JlbWFwcGluZyI6IFsiQGpyaWRnZXdlbGwvcmVtYXBwaW5nQDIuMy41IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogIl4wLjMuNSIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjQiIH0gfSwgInNoYTUxMi1MSTl1LytsYVlHNERzMVRES1NKVzJZUHJJbGNWWU93aTJmVUM2eEI0M2x1ZUNqZ3hWNGxmZk9DWkN0WUZpSDZUTk9YK3RRS1h4OTdUNElLSGJoeUhFUT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3Jlc29sdmUtdXJpIjogWyJAanJpZGdld2VsbC9yZXNvbHZlLXVyaUAzLjEuMiIsICIiLCB7fSwgInNoYTUxMi1iUklTZ0NJalAyMC90YldTUFdNRWk1NFFWUFJaRXhrdUQ5bEpMK1VJeFVLdHdWSkE4d1cxVHJiMWpNczFSRlhvMUNCVE5aLzVocEM5UXZtS1dkb3BLdz09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3NvdXJjZS1tYXAiOiBbIkBqcmlkZ2V3ZWxsL3NvdXJjZS1tYXBAMC4zLjExIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogIl4wLjMuNSIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjUiIH0gfSwgInNoYTUxMi1aTXAxVjhaRmNQRzVkSVduUUxyM05TSTFNaUNVN1VFVGRTL0EwRzhWL1hXSHZKdjNac0ZxdXRKbjFZNVJQbUFQWDZGM0JpRTM5N09xdmVVLzlOQ3VJQT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3NvdXJjZW1hcC1jb2RlYyI6IFsiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjQDEuNS41IiwgIiIsIHt9LCAic2hhNTEyLWNZUTkzMTBncnF4dWVXYmwrV3VJVUlhaVVhRGNqN1dPcTVmVmhFbGpOVmdSZk9VaFk5ZnkyelR2Zm9xV3NuZWJoOFNsNzBWU2NGYklDdkpuTEtCME9nPT0iXSwKCiAgICAiQGpyaWRnZXdlbGwvdHJhY2UtbWFwcGluZyI6IFsiQGpyaWRnZXdlbGwvdHJhY2UtbWFwcGluZ0AwLjMuMzEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvcmVzb2x2ZS11cmkiOiAiXjMuMS4wIiwgIkBqcmlkZ2V3ZWxsL3NvdXJjZW1hcC1jb2RlYyI6ICJeMS40LjE0IiB9IH0sICJzaGE1MTItenpOUitTZFFTREp6Yzhqb2FlUDhRUW9DUXI4TnVZeDJkSUl5dGwxUWVCRVpISjl1VzZoZWJzcllnYno4aEp3VVFhbzNUV0NNdG1mVjhOdTF0d09MQXc9PSJdLAoKICAgICJAbmFwaS1ycy93YXNtLXJ1bnRpbWUiOiBbIkBuYXBpLXJzL3dhc20tcnVudGltZUAxLjEuNCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAdHlieXMvd2FzbS11dGlsIjogIl4wLjEwLjEiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQGVtbmFwaS9jb3JlIjogIl4xLjcuMSIsICJAZW1uYXBpL3J1bnRpbWUiOiAiXjEuNy4xIiB9IH0sICJzaGE1MTItM05RTk5nQTFZU2xKYi9rTUgxaWxkQVNQOUhXNy83a1luUkkyc3pXSmFvZmFTMWhXbWJHSTRIK2QzKzIyYUd6WFhOOUlKK24rR2lGVmNHaXBKUDE4b3c9PSJdLAoKICAgICJAbmV4dC9lbnYiOiBbIkBuZXh0L2VudkAxNi4yLjYiLCAiIiwge30sICJzaGE1MTItZ2Q4SG9ITjR1Zmo3M1dtUjNKbVZvbHJwSlI0N0lMSzZMb3VQNXhFbFBnbGFWeGlyNmUxYTdWenZUdkRXa09vUFhUOXJra1R6eUN4QnU0eWVaZlp3Y3c9PSJdLAoKICAgICJAbmV4dC9zd2MtZGFyd2luLWFybTY0IjogWyJAbmV4dC9zd2MtZGFyd2luLWFybTY0QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVpKR2trY05mWWdyck1rcU9kWjd6b0xhMVRPeTBxcGNNZmsvejRNaC9GS1V6NDBnVk8rSE5RV3FtTHhmNjdaNVdCNjREUnAwZGhFYnlIZmVsKzZzSlVnPT0iXSwKCiAgICAiQG5leHQvc3djLWRhcndpbi14NjQiOiBbIkBuZXh0L3N3Yy1kYXJ3aW4teDY0QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi12L1lMQkhJWTEzMkNlZDNwdUJKN1lKS3cxbHFzQ3JnY05vMmFSSmxDRXlRcnJDZVJKbHZHbG5teGhQeE5RSTNLRTNOMURONXI5VFBOUHZrYTNucTVSUT09Il0sCgogICAgIkBuZXh0L3N3Yy1saW51eC1hcm02NC1nbnUiOiBbIkBuZXh0L3N3Yy1saW51eC1hcm02NC1nbnVAMTYuMi42IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1SUE92cWxZQmJjUWprejlWUVFEWjJUMmJBUklqWFpWMUtGbHQrVjJNcjZTVy9lNEk5ZmNLc2FBMGhkeWYyRkhvVGxzVjJ4bkJkNVk5MTJyUC8xQ2U2dz09Il0sCgogICAgIkBuZXh0L3N3Yy1saW51eC1hcm02NC1tdXNsIjogWyJAbmV4dC9zd2MtbGludXgtYXJtNjQtbXVzbEAxNi4yLjYiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVVSVVR1MStkTWt4SnNQRmdtK09lRXZxOXdmNXN1ancwRXZnWXk4MFRER0hUU0xUbklIZXFiMEV1OEEzc0M5NUlSZ2plalFMK2tDNG13KzR5UHhpQVhBPT0iXSwKCiAgICAiQG5leHQvc3djLWxpbnV4LXg2NC1nbnUiOiBbIkBuZXh0L3N3Yy1saW51eC14NjQtZ251QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLURPajE4Mm1QVjhHM1VrcmF5TG9SRU01WUVZSStEazV3djdPeDl4bDFmRmliQUVMRXNGRDBsRFBmSEllSUxsdXRNTWZkeWhsellQRUxHM3BldUthdXJ3PT0iXSwKCiAgICAiQG5leHQvc3djLWxpbnV4LXg2NC1tdXNsIjogWyJAbmV4dC9zd2MtbGludXgteDY0LW11c2xAMTYuMi42IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSEtRNVNQL1YvdWI3M1V2RjduL3plSmx4azJrTG10TDdXenJnNFdmbWtqbU5vczVvbkoydEt1N3laT1BkTDE4QTZTdmZuM21heDI5eW0rcnk3TmtLNGc9PSJdLAoKICAgICJAbmV4dC9zd2Mtd2luMzItYXJtNjQtbXN2YyI6IFsiQG5leHQvc3djLXdpbjMyLWFybTY0LW1zdmNAMTYuMi42IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1MWlhwVGxQeVM1djdIaFNtbnZzTEdQM2lJWWdZT0JuYzhyOEFybFQ1NXNHSFY4OWJSMkhsRGRCaldRK1BZNlNKTW1rOFR1VkdGdXhhbG5QM2svMER3Zz09Il0sCgogICAgIkBuZXh0L3N3Yy13aW4zMi14NjQtbXN2YyI6IFsiQG5leHQvc3djLXdpbjMyLXg2NC1tc3ZjQDE2LjIuNiIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLUYwKzRpMGg5SjZDNGVFM0VBUFdzb0NrN1VXL2Riek9qeXp4WTBxbkRVT1lGdTZGRm1kWjZsOTcvWGRWMy9OejNWWXlPN1VXanlFSlVYa0dxY29YZk1BPT0iXSwKCiAgICAiQG94Yy1wcm9qZWN0L3R5cGVzIjogWyJAb3hjLXByb2plY3QvdHlwZXNAMC4xMzAuMCIsICIiLCB7fSwgInNoYTUxMi1pYkQydXN4OUpSdTdmNXB1MnRNS01JNGNwQTROZ1hKUW9ZUlA0cFE3UHhtbjFsNmsvNTNxV3RRV1pheWhZeTNYNFFaa3Q5ME90K21KRWFlWG91aW82UT09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWFuZHJvaWQtYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLWFuZHJvaWQtYXJtNjRAMS4wLjEiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItZkpJM0kwcjNDM09qL3pkQkNwYUNtQlJaWWYwN3hwYXE0eUNmRERvU0ZtK2JlV056YklsMjZwdVc4UnJhVWR1Z29Kdy85NXplck5PbjZqYXNBaHpTbWc9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1kYXJ3aW4tYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLWRhcndpbi1hcm02NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLWNLbkFoV0VzVjdUUGNBLzVFQXRlRHA2S2NKWkJRMkcrQnFFN3pheU1NaTdrTXZ3UnNidjdXVDlhT25uMFdObDRTS0VJZjQzdmpTMzFpVVB1ODBuelhnPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NCI6IFsiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1ZS3JWd1FqSVJCUG8rNUcvdTAzd0dqYmR5NHE3cHl6Q2U5M0RLOVZKN3prVm1lZzhMSjdHYmdzaUhXZFI0eFNvZTRDQVhSRDdCY2pnYnRyNjRia1hOZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWZyZWVic2QteDY0IjogWyJAcm9sbGRvd24vYmluZGluZy1mcmVlYnNkLXg2NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItei9vQnNSRW80NlNzRnFCd1l0RmUwa3BKZUJpakFUNDhPL1dYTEk0c3VpQ0xCa3IwM1JUdFRKTUN6U2REZDJ6bmxoOFZKaXpMMDlYVmtRZ2s4SVpvbnc9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmQDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItaWs4cTdHTTExenh2WXhGYzJQZURjVDZUQnZoQ1FNYVV4ZnBoL001bDlzS3VUcy9TamczTCtCeXcwRjd3MFpWTEJabXgzMFArZ0cwRUN6ek4rTUZjbVE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1nbnUiOiBbIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LWFybTY0LWdudUAxLjAuMSIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItUW9TeDJFa3lycmRaNmtjeUU4c3RxWjYydDBZcmE4RnM1aWE5bE94SnJoNlRNUUpLN2dRS21zY2RUSGY3cE9YS1JFS3JWd090SmNRRzNxVlNmYzg2NkE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsQDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi11d053RnB3S2VOaVphd2ZBV0JnZzBWSXp0UFRWM2loaGgxdlYzMzRoOWl2bk5Mb3J4blFNVTZGejh3RzFaYjRRaDlMQzEvTWtjeVQzWWxEWEczUnNnZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXBwYzY0LWdudSI6IFsiQHJvbGxkb3duL2JpbmRpbmctbGludXgtcHBjNjQtZ251QDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi16WTFidWw3T1dyN0RGQmlKKyt3b2ZYdm5yOEI0NWNlM1FzUVVoS3JJaFhzeWdBaDdiVGt3eWVNMWJpMWEyZzVDL3lDL044VFp5R0RFb01mbS9sOW1wZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXMzOTB4LWdudSI6IFsiQHJvbGxkb3duL2JpbmRpbmctbGludXgtczM5MHgtZ251QDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJzMzkweCIgfSwgInNoYTUxMi0wZnJsc1QvZjRGdDZJN1NNRVNUS25GM2Nac2RpY1FuMWRDTWtGL2pUOXdETEUrZ0dvaVFmdjFubVQ5ZStzN3MvZmVrdnZ5NnRaTTJqSHZJMnRrYkpEUT09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1nbnUiOiBbIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1nbnVAMS4wLjEiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1YQUJWbUdwOVRnMFdzcFRWdndkdVRjNGZwcXk2Sm5BVXJTUWU2T3V5cUQvMDNuSTdyME85T1dVa01Jd0ZyaktBSXFvbHZxb0E0WnJKcHBnd0UwR3htdz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1tdXNsIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC14NjQtbXVzbEAxLjAuMSIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLWJWNGZ6c3d1elZjS0Q5MG8vVk02UXFLeG54bERxMGcyQklTRExOVm14cm5ocHYxRERieVBoQ0lqWWZ2ellMVitNdmtLS25RdDJRNkFPODZTRUJVTFVRPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctb3Blbmhhcm1vbnktYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLW9wZW5oYXJtb255LWFybTY0QDEuMC4xIiwgIiIsIHsgIm9zIjogIm5vbmUiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLS9NaDBaaHEzT1A3ZlZzMGtjUUhaUDZsWkV0aE1HVGFTZjhVQlFZU0ZFWkRXR1hYbEVDK25KNkVxZW5hSzJ0NExCWE1lM0ErSy9HMkJWWFhkdE9yNFBRPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctd2FzbTMyLXdhc2kiOiBbIkByb2xsZG93bi9iaW5kaW5nLXdhc20zMi13YXNpQDEuMC4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvY29yZSI6ICIxLjEwLjAiLCAiQGVtbmFwaS9ydW50aW1lIjogIjEuMTAuMCIsICJAbmFwaS1ycy93YXNtLXJ1bnRpbWUiOiAiXjEuMS40IiB9LCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItKzF4YzlYNDVsOHVmc0JBbTZHanZ4MnFEUklZOWxUVnQwY2dXTmNKKzFnZGhYdmtieGVQQTYweVJUd1NUdVhMMDlDTWh5Sm1qcFY3RTNOb3l4YnFGUVE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjIjogWyJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjQDEuMC4xIiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi0xRCtVcVpkZm51UitKeTFHZ01Kd2k4NWJENDBIMjF1Tm1PUFJXUWh3NG9SU3VvbFovQjVyaXhaNDVESzJLWE9UQ3ZtVkNlY2F1V2dFaGJ3OGJJN3RPdz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLXdpbjMyLXg2NC1tc3ZjIjogWyJAcm9sbGRvd24vYmluZGluZy13aW4zMi14NjQtbXN2Y0AxLjAuMSIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLUlOQXljYVd1aGxPSzN3azRtUkhHc2Rnd1lXbWQ5Y0NoZFBkRTlid1dteTZybjlWcVZOWU5GR2hPZFhyb2ZYVXh3SEluY1NpUE5iOHRObThrbkRWSWVRPT0iXSwKCiAgICAiQHJvbGxkb3duL3BsdWdpbnV0aWxzIjogWyJAcm9sbGRvd24vcGx1Z2ludXRpbHNAMS4wLjEiLCAiIiwge30sICJzaGE1MTItMmo5Ykd0NUpoOGhqK3ZQdGd6UHRsNzJqMHlSeEhBeXVtb282VE5mQWpzTEIwNFV0cFN2UGJQY0RjQk14ejduKzlDWUIwYzFHeFFGeFlSZzJqaW1xR3c9PSJdLAoKICAgICJAc3RhbmRhcmQtc2NoZW1hL3NwZWMiOiBbIkBzdGFuZGFyZC1zY2hlbWEvc3BlY0AxLjEuMCIsICIiLCB7fSwgInNoYTUxMi1sMmFGeTVqQUxobmlHNUhncXJENmpYTGkvclVXckt2cU4vcUp4NnlvSnNnS2hibFZkK2lxcVU0UkNYYXZtL2pQaXR5RG81VEN2S01ucGpLbk9yaXkwdz09Il0sCgogICAgIkBzd2MvaGVscGVycyI6IFsiQHN3Yy9oZWxwZXJzQDAuNS4xNSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi44LjAiIH0gfSwgInNoYTUxMi1KUTVUdU1pNDVPd2k0L0JJTUFKQm9TUW9PSnUxMm9Pay9nQURxbGNVTDlKRWRIQjh2eWpVU3N4cWVOWG5tWEhqWUtNaTJXY1l0ZXpHRUVocVVJL0UyZz09Il0sCgogICAgIkB0YWJieV9haS9oaWpyaS1jb252ZXJ0ZXIiOiBbIkB0YWJieV9haS9oaWpyaS1jb252ZXJ0ZXJAMS4wLjUiLCAiIiwge30sICJzaGE1MTItcjViQ2xLcmNJdXNEb28wNDlkU0w4Q2F3bkhSNm1SZER3aGxRdUlnWlJOdHk2OHEweDhrM0xmMUJ0UEFNeFJmL0dnbkhCbklPNHVqZDMrR1FkTFd6eFE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvbm9kZSI6IFsiQHRhaWx3aW5kY3NzL25vZGVANC4zLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvcmVtYXBwaW5nIjogIl4yLjMuNSIsICJlbmhhbmNlZC1yZXNvbHZlIjogIl41LjIxLjAiLCAiaml0aSI6ICJeMi42LjEiLCAibGlnaHRuaW5nY3NzIjogIjEuMzIuMCIsICJtYWdpYy1zdHJpbmciOiAiXjAuMzAuMjEiLCAic291cmNlLW1hcC1qcyI6ICJeMS4yLjEiLCAidGFpbHdpbmRjc3MiOiAiNC4zLjAiIH0gfSwgInNoYTUxMi1hRmI0Z1VoRk9nZGg5QVhvNEl6QkVPekJra0F4bTlWaWd3REpuTUlZdjNsY2ZYQ0pWZXNOZmJFYUJsNEJOZ1ZSeWlkOTJBbWR2aXF3QlVCUktTZVkzZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZSI6IFsiQHRhaWx3aW5kY3NzL294aWRlQDQuMy4wIiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQHRhaWx3aW5kY3NzL294aWRlLWFuZHJvaWQtYXJtNjQiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtZGFyd2luLXg2NCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtZnJlZWJzZC14NjQiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybS1nbnVlYWJpaGYiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybTY0LWdudSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtbXVzbCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LWdudSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LW11c2wiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLXdhc20zMi13YXNpIjogIjQuMy4wIiwgIkB0YWlsd2luZGNzcy9veGlkZS13aW4zMi1hcm02NC1tc3ZjIjogIjQuMy4wIiwgIkB0YWlsd2luZGNzcy9veGlkZS13aW4zMi14NjQtbXN2YyI6ICI0LjMuMCIgfSB9LCAic2hhNTEyLUY3SFpHQmVOOUkwL0F1dUpTNVB3Y0Q4eGF5eDVyaTVHaGpZVURCRVZZVWtleHlBL2dpd2JETmpSVnJ4U2V6RTNUMjUwT1UySy93cC9sdFd4M1VPZWZnPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWFuZHJvaWQtYXJtNjQiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1hbmRyb2lkLWFybTY0QDQuMy4wIiwgIiIsIHsgIm9zIjogImFuZHJvaWQiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVRKUGlxNjd0S2xMdU9iUDZSa3d2VkdEb3hDTUJWdERnS2tMZmEvdXlqNy9GeXh2UXdIUytVT25WclhYZ2JFc2ZVYU1naVZ2QzRLYkpuUnIyNmhvNE5nPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NCI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NEA0LjMuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLW9NTi9XWlJiK1NPMzdCbVVFbEVnZUVXdVU4RS9IWFJraU9EeEp4TGUxVVRIVlhMcmRWU2dmYUpWN3BTbGhSR01TT2lYTHV4VElqZnNGM3dZdno4Y2dRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi14NjQiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1kYXJ3aW4teDY0QDQuMy4wIiwgIiIsIHsgIm9zIjogImRhcndpbiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLU42Q1VtdTRhNmJLVkFEZnc3N3AraXc2WWQ5UTNPQmhlMHZlYURYK1FhemZ1VllsUXNIZkRneEJyc2pRL0lXK3p5d0w4bVRyTmQwU2RKVC96Z3R2TWRBPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWZyZWVic2QteDY0IjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtZnJlZWJzZC14NjRANC4zLjAiLCAiIiwgeyAib3MiOiAiZnJlZWJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLXpETDVoQmtRZEg1QzZNcHFiSzNnUUFnUDgwdHNNd1NJMjZ2ak96akp0TkNNVW8wbEZnT0l0ekhLQkl1cE9aTlF4dDNvdVBIN1JQaHZOaGlUZkNlNUNRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybS1nbnVlYWJpaGYiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC1hcm0tZ251ZWFiaWhmQDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItUjA2SGROaTdBN09Fb01zZjZkNHRqWjcxUkNXblpRUEhqMm1ub3RTRlVSak5MZEJDK2NJZ1hRN2w4MUNxZW9pUWZ0amY2T09ibHhYTUluTWdOMlZ6TUE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtZ251IjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtZ251QDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1xVEpIRUxYOGpldGpoUlFIQ0xpbGtWTG15YnB6TlFBdGFJL2dhb1ZvaWRuL3VmYk5EYkFvOEtsSzJKK3lQb2M4d1F4dkR4Q21oLzVscjhuQzErbFRiZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC1hcm02NC1tdXNsIjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtbXVzbEA0LjMuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItWjZzdWtpUXNuZ25XTytsMzlYNHBQYmlXVDgxSUMrUExLRitQSHhJbHlaYkdOYjlNT0RmWWxYRVZsRnZlajVCT1pJbldYMDFrVnl6ZUx2SHNYaGZjelE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LWdudSI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LXg2NC1nbnVANC4zLjAiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1EUk5kUVJwU0d6UkdmQVJWdVZreHZNOFExMm5oMTlsNEJGL0c3ekdBMW9lKzl3Y0M2c2FGQkhUSVNycEljS3poaVh0U3JsU3JsdUNmdk11bGVkb0NUUT09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC14NjQtbXVzbCI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LXg2NC1tdXNsQDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItWjBJQURiRG84Ymg2STdoMklRTXg2MDFBZFhCTGZGcEVkVW90ZnQ4NmV2ZC84WlBmbFplOUNPUE84UTF2dytwZkxXSVVvOXpOL0pHWnZ3dUFKcWR1cWc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kiOiBbIkB0YWlsd2luZGNzcy9veGlkZS13YXNtMzItd2FzaUA0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAZW1uYXBpL2NvcmUiOiAiXjEuMTAuMCIsICJAZW1uYXBpL3J1bnRpbWUiOiAiXjEuMTAuMCIsICJAZW1uYXBpL3dhc2ktdGhyZWFkcyI6ICJeMS4yLjEiLCAiQG5hcGktcnMvd2FzbS1ydW50aW1lIjogIl4xLjEuNCIsICJAdHlieXMvd2FzbS11dGlsIjogIl4wLjEwLjEiLCAidHNsaWIiOiAiXjIuOC4xIiB9LCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItSE5aR09VeEVtRWxrc1lSN1M2c0M1alRlTkdwb2JBc3k5dTdHdTBBc2tKOC8yMEZSOUdxZWJVeUIrSEJjVS9heDZCSHVpdUppK09kYTRCK1lYNkgxeUE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2luMzItYXJtNjQtbXN2YyI6IFsiQHRhaWx3aW5kY3NzL294aWRlLXdpbjMyLWFybTY0LW1zdmNANC4zLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVBlK1JQVlRpMVQrcXltdXVScGNkdndTVlpqbmxsL2Y3bjhnQnhNTWgzeExUY3RNREtxcGRmR2ltYk15aW9xdExoVVlaeGRKOXdHTmhWN01LSHZnWnNRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLXdpbjMyLXg2NC1tc3ZjIjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtd2luMzIteDY0LW1zdmNANC4zLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1NdnJmMmtYVy95ZVcvT1RlelpsQ0dPaXJYUmNVdUxJQngvNVkxMkJhUE03d0pvcnlHNmRmUy9OSkw4YUJQcXRURXgvVm00VDR2S3pGVWNLRFQrVEtVQT09Il0sCgogICAgIkB0YWlsd2luZGNzcy9wb3N0Y3NzIjogWyJAdGFpbHdpbmRjc3MvcG9zdGNzc0A0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYWxsb2MvcXVpY2stbHJ1IjogIl41LjIuMCIsICJAdGFpbHdpbmRjc3Mvbm9kZSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUiOiAiNC4zLjAiLCAicG9zdGNzcyI6ICJeOC41LjEwIiwgInRhaWx3aW5kY3NzIjogIjQuMy4wIiB9IH0sICJzaGE1MTItSm0wNVRqeCs5eUNMR3Y1cXcxYys4NFBzZHM4TW55ckVRWUNCK0ZGazJsZ0dpVWpsUnFkeGtlNG1WVHVZcmoyeG5WWnFLaW0yQXByNXlTdVFSWUF3L3c9PSJdLAoKICAgICJAdHlieXMvd2FzbS11dGlsIjogWyJAdHlieXMvd2FzbS11dGlsQDAuMTAuMiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi40LjAiIH0gfSwgInNoYTUxMi1Sb0J2SjJYMHd1S2xXRklqcndmZkd3MUlxWkhLUXF6SWNoS2FhZFpaZm5OcHNBWXAybU0waDM2SnRQQ2pOREFIR2dZZXovMTV1TUJwZkd3Y2hoaU1nZz09Il0sCgogICAgIkB0eXBlcy9jaGFpIjogWyJAdHlwZXMvY2hhaUA1LjIuMyIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAdHlwZXMvZGVlcC1lcWwiOiAiKiIsICJhc3NlcnRpb24tZXJyb3IiOiAiXjIuMC4xIiB9IH0sICJzaGE1MTItTXc1NThvZUE5ZkZidjY1L3k0bUh0WERzOWJQbkZNWkFML2p4ZFBGVXBPSEhJWFg5MW1jZ0VIYlM1TGFocitwd1pGUjhBN0dRbGVSV2VJNmNHRkMyVUE9PSJdLAoKICAgICJAdHlwZXMvZGVlcC1lcWwiOiBbIkB0eXBlcy9kZWVwLWVxbEA0LjAuMiIsICIiLCB7fSwgInNoYTUxMi1jOWg5ZFZWTWlnTVBjNGJ3VHZDNWR4cXRxSlp3UVBlUHNXalBscFNPbm9qYm9yNnBHcWRrNTQxbGZBN0FxRlFyNXBCMUJSZHEwanVZOWRiODFCd3lGdz09Il0sCgogICAgIkB0eXBlcy9lc3RyZWUiOiBbIkB0eXBlcy9lc3RyZWVAMS4wLjkiLCAiIiwge30sICJzaGE1MTItR2hkUGd5MWVsNC9JbVAwNVgwNVV3NGN3Mi9NOTNCQ1VtbkV2V1pOU3RsQ3pFS01FNEZraytZcG9BNU9pSE5RbW9TN0NhZmI4WGEzUHlhOG0xUXJ6ZWc9PSJdLAoKICAgICJAdHlwZXMvbm9kZSI6IFsiQHR5cGVzL25vZGVAMjIuMTkuMTkiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidW5kaWNpLXR5cGVzIjogIn42LjIxLjAiIH0gfSwgInNoYTUxMi1keWgveE8yRmg1YllyZldhYXFHclJRUUdrTmRtWXc2QW1hQVV2WWVVTU5UV1F0dmI3OTZpa0xkbVRjaFJtT2xPaUlKMVREWGZXZ1Z4MVFrVWxRNkhldz09Il0sCgogICAgIkB0eXBlcy9yZWFjdCI6IFsiQHR5cGVzL3JlYWN0QDE5LjIuMTUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiY3NzdHlwZSI6ICJeMy4yLjIiIH0gfSwgInNoYTUxMi1lUndjR05IdmUrRThxdEVRU1NSbDZ1cmgrckZvcDR2OGdtNk84ckd2MjVDb2RidkZkTGpBMXZWUTFLa2lGRTB3MFVQT25iOHREaUZLTDVscDBydFk1UT09Il0sCgogICAgIkB0eXBlcy9yZWFjdC1kb20iOiBbIkB0eXBlcy9yZWFjdC1kb21AMTkuMi4zIiwgIiIsIHsgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJAdHlwZXMvcmVhY3QiOiAiXjE5LjIuMCIgfSB9LCAic2hhNTEyLWpwMkwvZVk2Zm4rS2dWVlFBT3FZSXRiRjBWWS9ZQXBlNU16MkYwYXlrU084Z3gzMWJZQ1p5dlNlWXhDSEt2ekhHNWVaamMrenlhUzVCckJXeWEyK2tRPT0iXSwKCiAgICAiQHZpdGVzdC9leHBlY3QiOiBbIkB2aXRlc3QvZXhwZWN0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBzdGFuZGFyZC1zY2hlbWEvc3BlYyI6ICJeMS4xLjAiLCAiQHR5cGVzL2NoYWkiOiAiXjUuMi4yIiwgIkB2aXRlc3Qvc3B5IjogIjQuMS42IiwgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAiY2hhaSI6ICJeNi4yLjIiLCAidGlueXJhaW5ib3ciOiAiXjMuMS4wIiB9IH0sICJzaGE1MTItN0VIRHF1UHRoQUxTVjBqaGhqZ0VXOEZYYXZpTXg3clNxdThXNm9xQ29BdU9oS292ODE0UDk5UURWMXB4TUEzUVB2MjFZdWR2Sm5nSWhqck5JNG9wTGc9PSJdLAoKICAgICJAdml0ZXN0L21vY2tlciI6IFsiQHZpdGVzdC9tb2NrZXJANC4xLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHZpdGVzdC9zcHkiOiAiNC4xLjYiLCAiZXN0cmVlLXdhbGtlciI6ICJeMy4wLjMiLCAibWFnaWMtc3RyaW5nIjogIl4wLjMwLjIxIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIm1zdyI6ICJeMi40LjkiLCAidml0ZSI6ICJeNi4wLjAgfHwgXjcuMC4wIHx8IF44LjAuMCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIm1zdyIsICJ2aXRlIl0gfSwgInNoYTUxMi1NQ0ZjNjNjek1qRUluT2xjWTJjcFFDdkNOK0tnYkFuKzYweHU5Y01nUDRzS2FMQzVKTkFLdzdKSDhRZEFub0FDODhoVzFJaVNOWitHZ1ZYbE4xVWNNUT09Il0sCgogICAgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6IFsiQHZpdGVzdC9wcmV0dHktZm9ybWF0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRpbnlyYWluYm93IjogIl4zLjEuMCIgfSB9LCAic2hhNTEyLWg1U3hEL0l6TmhaWW5yU1pSc1VaUUlDK3ZEMEdZOGNVdnEwaXdzbWtGS2l4UkNLTExXcUNYYS9GSVE0UzFSK3NJK1BHb29qa0hzZE5yYlppTTlRcGd3PT0iXSwKCiAgICAiQHZpdGVzdC9ydW5uZXIiOiBbIkB2aXRlc3QvcnVubmVyQDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAicGF0aGUiOiAiXjIuMC4zIiB9IH0sICJzaGE1MTItbk9QQ21uMit5RDBaTm1LZHNYR3YvVXhNTVdiTXVLZUQ2R3lZbmNOd2RrWUR4cFF2clBTS1lqMnJXdURqQzJZNGI2dzZoamlwNWRCS0Z6RVV1WmUzdkE9PSJdLAoKICAgICJAdml0ZXN0L3NuYXBzaG90IjogWyJAdml0ZXN0L3NuYXBzaG90QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6ICI0LjEuNiIsICJAdml0ZXN0L3V0aWxzIjogIjQuMS42IiwgIm1hZ2ljLXN0cmluZyI6ICJeMC4zMC4yMSIsICJwYXRoZSI6ICJeMi4wLjMiIH0gfSwgInNoYTUxMi1ZaHNkRTZ4QVZmVERtemp4TDJaRFV2amorWnNneU9LZStUZFF6cWtENzJ3SU9tSGthOE51R1E2TnBUTlp2OUQyWjYzZmJ3V0tKUGVWcEV3NEVRZ1l4dz09Il0sCgogICAgIkB2aXRlc3Qvc3B5IjogWyJAdml0ZXN0L3NweUA0LjEuNiIsICIiLCB7fSwgInNoYTUxMi1KRkt4TXg2dWRod0toL0xkbzI3MGUxN1FYNzEwdmd1bk1rdVBBdlhqSFN2QzZvcUxXQUhoVmhqZy9JNzFxMHUwQ0JTRXJJT0RWMUtqdjBGUU5TV2pkZz09Il0sCgogICAgIkB2aXRlc3QvdXRpbHMiOiBbIkB2aXRlc3QvdXRpbHNANC4xLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHZpdGVzdC9wcmV0dHktZm9ybWF0IjogIjQuMS42IiwgImNvbnZlcnQtc291cmNlLW1hcCI6ICJeMi4wLjAiLCAidGlueXJhaW5ib3ciOiAiXjMuMS4wIiB9IH0sICJzaGE1MTItRnhJWStVODFSM0xHS0N4YUhIRlJRNStnNi9pUmdHTG1lSFdkcDJBbWo0bGpRUnJFSVdIbVp5RGZEWUJSWmxweXFBN3FLeHRTOUREMWRoazhSblJJVlE9PSJdLAoKICAgICJhY29ybiI6IFsiYWNvcm5AOC4xNi4wIiwgIiIsIHsgImJpbiI6IHsgImFjb3JuIjogImJpbi9hY29ybiIgfSB9LCAic2hhNTEyLVVWSnlFOU10dE9zQlFJREt3MXNrYjluQXdRdVI1d3VHRDMrODJLNkpnSmxtL1krS0k5Mm9Oc01OR1pDWWREc1Z0UkhTYWswcGNWNURubzUrNGpoOXN3PT0iXSwKCiAgICAiYW5zaS1yZWdleCI6IFsiYW5zaS1yZWdleEA1LjAuMSIsICIiLCB7fSwgInNoYTUxMi1xdUpRWGxUU1VHTDJMSDlTVVhvOFZ3c1k0c29hbmhnbzZMTlNtODRFMUxCY0U4czNPMHdwZGlSenlSOXovWlpKTWxNV3YzN3FPT2I5cGRKbE1VRUtGUT09Il0sCgogICAgImFuc2ktc3R5bGVzIjogWyJhbnNpLXN0eWxlc0A0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjb2xvci1jb252ZXJ0IjogIl4yLjAuMSIgfSB9LCAic2hhNTEyLXpiQjlyQ0pBVDFyYmppVkRiMmhxS0ZITllMeGd0azhOVVJ4WjNJWndEM0Y2TnR4YlhaUUNublNpMUxreCtJRG9oZFBsRnAyMjJ3VkFMSWhlWkpRU0VnPT0iXSwKCiAgICAiYXNzZXJ0aW9uLWVycm9yIjogWyJhc3NlcnRpb24tZXJyb3JAMi4wLjEiLCAiIiwge30sICJzaGE1MTItSXppOFJRY2ZmcUNlTlZnRmlnS2xpMXNza2xJYnBIbkNZYzZBa25YR1lvQjZnckpxeWVieTdqdjEySlVRZ21UQW5JRG5iY2sxdXhrc1Q0ZHpOM1BXQkE9PSJdLAoKICAgICJiYXNlbGluZS1icm93c2VyLW1hcHBpbmciOiBbImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZ0AyLjEwLjMxIiwgIiIsIHsgImJpbiI6IHsgImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZyI6ICJkaXN0L2NsaS5janMiIH0gfSwgInNoYTUxMi1NdWpZTzNlUDcydXZtU0UwaTR3bHRzb2RSZklwWkFUUDNqdnpSTlJHR3hneklkN2FWb2NWSkpWM25mMDFxbnp6S0ZHeFFWQzlicFd4bDVjanhUci83UT09Il0sCgogICAgImJ1ZmZlci1mcm9tIjogWyJidWZmZXItZnJvbUAxLjEuMiIsICIiLCB7fSwgInNoYTUxMi1FK1hRQ1J3U2JhYWlDaHR2Nms2RHdnYytieCtCczZ2dUtKSEhsNWtveC9CYUtiaGlYenFRT3dLNGNPMjJ5RWxHcDJPQ21qd1ZoVDNIbXhneVBHbkpmUT09Il0sCgogICAgImNhbml1c2UtbGl0ZSI6IFsiY2FuaXVzZS1saXRlQDEuMC4zMDAwMTc5MyIsICIiLCB7fSwgInNoYTUxMi1pd1NzWVdhQ09vaDI2Y1Y4TndOUlZpSGxyZlV2WXNIRGZSVmNidG13MEtnNlBKSVpaWHdNa2oxNDQyRllMQkdrZVVmMWp1QXNVM0RUZnhXNTc5bXJQQT09Il0sCgogICAgImNoYWkiOiBbImNoYWlANi4yLjIiLCAiIiwge30sICJzaGE1MTItTlVQUmx1T2ZPaVRLQkt2V1B0U0Q0UGhGdldDcU9pMEJHU3ROV3M1N1g5anM3WEdUcHJTbUZvejVGMHRXaFI0V1BqTmVSOWpYcWRDNy9VcFNKVG5sUmc9PSJdLAoKICAgICJjaGFsayI6IFsiY2hhbGtANC4xLjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiYW5zaS1zdHlsZXMiOiAiXjQuMS4wIiwgInN1cHBvcnRzLWNvbG9yIjogIl43LjEuMCIgfSB9LCAic2hhNTEyLW9LbmJoRnlSSVhwVXVlejhpQk1teUVhNG5iajRJT1F5dWhjL3d5OWtZNy9XVlBjd0lPOVZBNjY4UHU4UmtPNyswRzc2U0xST2V5dzlDcFEwNjFpNG1BPT0iXSwKCiAgICAiY2xpZW50LW9ubHkiOiBbImNsaWVudC1vbmx5QDAuMC4xIiwgIiIsIHt9LCAic2hhNTEyLUlWM091MGpTTXpacmQzcFo0OG5Ma1Q5REE3QWcxcG5QemFpUWhwVzdjM1JiY3FxenZ6elZ1K0w4Z2ZxTXAvOElNMk1RdFNpcWFDeHJyY2Z1OEk4ck1BPT0iXSwKCiAgICAiY2xpdWkiOiBbImNsaXVpQDguMC4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInN0cmluZy13aWR0aCI6ICJeNC4yLjAiLCAic3RyaXAtYW5zaSI6ICJeNi4wLjEiLCAid3JhcC1hbnNpIjogIl43LjAuMCIgfSB9LCAic2hhNTEyLUJTZU5ueXVzNzVDNC8vTlE5Z1F0MS9jc1RYeW8vOFNiK2FmTEFrekFwdEZ1TXNvZDlIRm9rR051ZFpwaS9vUVY3M2huVksrc1IrNVBWUk1kK0RyN1lRPT0iXSwKCiAgICAiY2xzeCI6IFsiY2xzeEAyLjEuMSIsICIiLCB7fSwgInNoYTUxMi1lWW0wUVdCdFVyQldaV0cwZDM4Nk9HQXcxNlo5OTVQaU9WbzJCN2JqV1NiSGVkR2w1ZTBaV2FxNjVrT0dnVVNOZXNFSURrQjlJU2JUZy9KSzlkaENaQT09Il0sCgogICAgImNvbG9yLWNvbnZlcnQiOiBbImNvbG9yLWNvbnZlcnRAMi4wLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiY29sb3ItbmFtZSI6ICJ+MS4xLjQiIH0gfSwgInNoYTUxMi1SUkVDUHNqN2l1L3hiNW9LWWNzRkhTcHBGTm5zai81Mk9WVFJLYjR6UDVvblh3VkYzelZtbVRvTmNPZkdDK0NSRHBmSy9VNTg0Zk1nMzhaSENhRWxLUT09Il0sCgogICAgImNvbG9yLW5hbWUiOiBbImNvbG9yLW5hbWVAMS4xLjQiLCAiIiwge30sICJzaGE1MTItZE95KzNBdVczYTJ3TmJaSEl1TVpwVGNnakd1TFUvdUJML3ViY1pGOU9YYkRvOGZmNE84eVZwNUJmMGVmUzh1RW9ZbzVxNEZ4N2RZOU9nUUdYZ0FzUUE9PSJdLAoKICAgICJjb21tYW5kZXIiOiBbImNvbW1hbmRlckAyLjIwLjMiLCAiIiwge30sICJzaGE1MTItR3BWa21NOHZGMnZRVWtqMkx2Wm1EMzVKeGVKT0xDd0o5Y1VrdWd5azJudWhidjMrbUp2cExZWXQrMCtVU014RStvaitleS9sSkVuaFp3NzV4L09NY1E9PSJdLAoKICAgICJjb25jdXJyZW50bHkiOiBbImNvbmN1cnJlbnRseUA5LjIuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjaGFsayI6ICI0LjEuMiIsICJyeGpzIjogIjcuOC4yIiwgInNoZWxsLXF1b3RlIjogIjEuOC4zIiwgInN1cHBvcnRzLWNvbG9yIjogIjguMS4xIiwgInRyZWUta2lsbCI6ICIxLjIuMiIsICJ5YXJncyI6ICIxNy43LjIiIH0sICJiaW4iOiB7ICJjb25jIjogImRpc3QvYmluL2NvbmN1cnJlbnRseS5qcyIsICJjb25jdXJyZW50bHkiOiAiZGlzdC9iaW4vY29uY3VycmVudGx5LmpzIiB9IH0sICJzaGE1MTItZnNmck8wTXhWNjRabm95OC9sMXZWSWpqSGEyOVNaeXlxUGdRQndoaURjYVc4d0pjMlczWFdWT0d4NE0zb0pCbnYvemRVWklJcDFnRGVTOThHelA4Tmc9PSJdLAoKICAgICJjb252ZXJ0LXNvdXJjZS1tYXAiOiBbImNvbnZlcnQtc291cmNlLW1hcEAyLjAuMCIsICIiLCB7fSwgInNoYTUxMi1LdnA0NTlIclYyRkVKMUNBc2kxS3UrTVkza2FzSDE5VEZ5a1R6MnhXbU1lcTZiazJOVTNYWHZmSitRNjFtMHhrdFd3dCsxSFNZZjNKWnNUbXMzYVJKZz09Il0sCgogICAgImNzc3R5cGUiOiBbImNzc3R5cGVAMy4yLjMiLCAiIiwge30sICJzaGE1MTItejFIR0tjWXkyeEE4QUdRZndybjBQQXkrUEI3WC9HU2ozVVZKVzlxS3luNDN4V2ErZ2w1blhtVTRxcUxNUnpXVkxGQzhLdXNVWDhULzBrQ2lPWXBBSVE9PSJdLAoKICAgICJkYXRlLWZucyI6IFsiZGF0ZS1mbnNANC4yLjEiLCAiIiwge30sICJzaGE1MTItMzdSaFNkeGFHMXN1ZW42VkRDemE2ck5yUWZvb3lRaDU3SEZWUHdRR0VxMlFXbGlWTHpQUVo4T2EwMTd3ZU91K0haQ256STdOM1BmL3d5b0JLZkVxckE9PSJdLAoKICAgICJkYXRlLWZucy1qYWxhbGkiOiBbImRhdGUtZm5zLWphbGFsaUA0LjEuMC0wIiwgIiIsIHt9LCAic2hhNTEyLWhUSVAveit0K3FLd0JEY21tc25taldUZHV4Q2crNUtmZHFXUXZiMlgvOEM5K2tuWVk2ZXBOL3BmeGREdXlWbFNWZUZ6MHNNNWVFZndJVVE3MFU0Y2tnPT0iXSwKCiAgICAiZGV0ZWN0LWxpYmMiOiBbImRldGVjdC1saWJjQDIuMS4yIiwgIiIsIHt9LCAic2hhNTEyLUJ0ajJCT09PODNvM1d5SDU5ZThNZ1hzeEVRVmNhcmtVT3BFWXJ1YkIwdXJ3bk4xMHlRMzY0cnNpQnlVMTFuWmxxV1labTA1aS9vZjdpbzRtemloQnRRPT0iXSwKCiAgICAiZW1vamktcmVnZXgiOiBbImVtb2ppLXJlZ2V4QDguMC4wIiwgIiIsIHt9LCAic2hhNTEyLU1Tall6Y1dOT0EwZXdBSHB6ME14cFlGdndnNnlqeTFORzN4dGVvcXo2NDRWQ28vUlBnbnIxL0dHdCtpYzNpSlR6UThFdTNUZE0xNFNhd25WVW1HRTZBPT0iXSwKCiAgICAiZW5oYW5jZWQtcmVzb2x2ZSI6IFsiZW5oYW5jZWQtcmVzb2x2ZUA1LjIxLjUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZ3JhY2VmdWwtZnMiOiAiXjQuMi40IiwgInRhcGFibGUiOiAiXjIuMy4zIiB9IH0sICJzaGE1MTItbUxDTmJyUWxpMTFLMXlTVW11TnQ0WlVCM09wR0lEcTRxMnZUQlRmNWNMMmxwc1JqSTlRS3FTRDBuZGpXOEZ5dmNXL0pqNDZnTWU5c3l5SEFzdk1hL0E9PSJdLAoKICAgICJlcy1tb2R1bGUtbGV4ZXIiOiBbImVzLW1vZHVsZS1sZXhlckAyLjEuMCIsICIiLCB7fSwgInNoYTUxMi1uMjd6VFlNall1MWFqNE1qQ1d6U1A3RzlyNzV1dHNhb2M4bTYxd2VLK1c4Sk1CR0dReWJkNDNHc3RDWFozV05tU0Z0R1Q5d2k1OXFRVFc2bWhUUjVMUT09Il0sCgogICAgImVzYnVpbGQiOiBbImVzYnVpbGRAMC4yNS40IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGVzYnVpbGQvYWl4LXBwYzY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9hbmRyb2lkLWFybSI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvYW5kcm9pZC1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvYW5kcm9pZC14NjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2Rhcndpbi1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZGFyd2luLXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZnJlZWJzZC1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZnJlZWJzZC14NjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWFybSI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtYXJtNjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWlhMzIiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWxvb25nNjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LW1pcHM2NGVsIjogIjAuMjUuNCIsICJAZXNidWlsZC9saW51eC1wcGM2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtcmlzY3Y2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtczM5MHgiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbmV0YnNkLWFybTY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9uZXRic2QteDY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9vcGVuYnNkLWFybTY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9vcGVuYnNkLXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvc3Vub3MteDY0IjogIjAuMjUuNCIsICJAZXNidWlsZC93aW4zMi1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvd2luMzItaWEzMiI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvd2luMzIteDY0IjogIjAuMjUuNCIgfSwgImJpbiI6IHsgImVzYnVpbGQiOiAiYmluL2VzYnVpbGQiIH0gfSwgInNoYTUxMi04cGdqTFVjVWpjZ0RnKzJRNE5ZWG5QYm8vdm5jQVk0VW15YUNtMGpaZXZFUnFDSFpJYVd3ZEpIa2Y4WFF0dTRBeFNLQ2R2clViVDBYVXIxSWRaekk4UT09Il0sCgogICAgImVzY2FsYWRlIjogWyJlc2NhbGFkZUAzLjIuMCIsICIiLCB7fSwgInNoYTUxMi1XVWoycWx4YVF0TzRnNlBxNWMyOUdUY1dHRHlkOGl0TDh6VGxpcGdFQ3ozSmVzQWlpT0tvdGQ4SlU2b3RCM1BBQ2dHNnhrSlV5Vmhib01TK2JqZS9qQT09Il0sCgogICAgImVzdHJlZS13YWxrZXIiOiBbImVzdHJlZS13YWxrZXJAMy4wLjMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL2VzdHJlZSI6ICJeMS4wLjAiIH0gfSwgInNoYTUxMi03UlVLZlhnU01Na3p0Nlp1WG1xYXBPdXJMR1BQZmdqNmw5dVJaN2xSR29sdmsweTJ5b2NjMzVMZGN4S0M1UFFaZG4yRE1xaW9BUTJOb1djclRLbW02Zz09Il0sCgogICAgImV4cGVjdC10eXBlIjogWyJleHBlY3QtdHlwZUAxLjMuMCIsICIiLCB7fSwgInNoYTUxMi1rbnZ5ZWF1WWhxak9ZdlE2Nk16blNNczgzd21IckN5Y05FTjZBbysyQWVZRWZ4VUlrdWlWeGRFYTFxbEdFUEsrV2UzbjBUSGlEY2lZU3NDY2dXL0RvQT09Il0sCgogICAgImZkaXIiOiBbImZkaXJANi41LjAiLCAiIiwgeyAicGVlckRlcGVuZGVuY2llcyI6IHsgInBpY29tYXRjaCI6ICJeMyB8fCBeNCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbInBpY29tYXRjaCJdIH0sICJzaGE1MTItdEliWXRaYnVjT3MwQlJHcVBKa3NoSlVZZEwrU0RIN2RWTThnankrRVJwM1dBVWpMRUZKRSswMmthbnlIdHdqV09ud3JLWUJpd0FtTTBwNGtMSkFuWGc9PSJdLAoKICAgICJmc2V2ZW50cyI6IFsiZnNldmVudHNAMi4zLjMiLCAiIiwgeyAib3MiOiAiZGFyd2luIiB9LCAic2hhNTEyLTV4b0RmWCtmTDdmYUFUbmFnbVdQcGJGdHdoL1I3N1dtTU1xcUhHUzY1QzN2dkIwWUhyZ0YrQjFZbVozNDQxdE1qNW42M2swMjEyWE5vSnd6bGhmZlF3PT0iXSwKCiAgICAiZ2V0LWNhbGxlci1maWxlIjogWyJnZXQtY2FsbGVyLWZpbGVAMi4wLjUiLCAiIiwge30sICJzaGE1MTItRHlGUDNCTS8zWUhUUU9DVUwvdzBPWkhSMGxwS2VHcnhvdGNIV2NxTkVkbmx0cUZ3WFZmaEVCUTk0ZUlvMzRBZlFwbzByR2tpNGN5SWlmdFkwNmgyRmc9PSJdLAoKICAgICJncmFjZWZ1bC1mcyI6IFsiZ3JhY2VmdWwtZnNANC4yLjExIiwgIiIsIHt9LCAic2hhNTEyLVJiSjUvam1GY05OQ2NEVjVvOWVUbkJMSi9Ic3pXVjBQNzNiYytGZjRuUy9ySmorWWFTNklHeWlPTDBWb0JZWCtsMVdybDNrNjNoL0tySCtuaEowWHZRPT0iXSwKCiAgICAiaGFzLWZsYWciOiBbImhhcy1mbGFnQDQuMC4wIiwgIiIsIHt9LCAic2hhNTEyLUV5a0pUL1ExS2pUV2N0cHBnSUFnZlNPMHRLVnVaVWpoZ01yMTdrcVR1bU1sNkFmdjNFSVNsZVU3cVpVem9YREZUQUhUREM0Tk9vRy9aeFUzRXZsTVBRPT0iXSwKCiAgICAiaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQiOiBbImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50QDMuMC4wIiwgIiIsIHt9LCAic2hhNTEyLXp5bW01K3Urc0NzU1d5RDlxTmFlalYzREZ2aENLY2xLZGl6WWFKVXVIQTgzUkxqYjduU3VHbmRkQ0hHdjBoaytLWTdCTUFsc1dlSzRVZWc2RVY2WFFnPT0iXSwKCiAgICAiaml0aSI6IFsiaml0aUAyLjcuMCIsICIiLCB7ICJiaW4iOiB7ICJqaXRpIjogImxpYi9qaXRpLWNsaS5tanMiIH0gfSwgInNoYTUxMi1BQy83Sm9mSnZaR3JybmVXTmFFbkplT0xVeCtKbEd0N3ROYTB3WmlSUFQ0TVkxd21mS2p0Mis2TzJwMnV6Mitza2xsOE9aWm1KTU5xZWtlN2tLYk5nUT09Il0sCgogICAgImxpYnBob25lbnVtYmVyLWpzIjogWyJsaWJwaG9uZW51bWJlci1qc0AxLjEyLjQxIiwgIiIsIHt9LCAic2hhNTEyLWxzbU1tR1hCeFhJSy9WTUxFajBrTDZNdFVzMWtCR2oxblRDemk2emdRb0cxREV3cXd0MkRReUh4Y0x5a2NlSXhBbmZFM2h5YTdOdUloNlBwQzZTM2ZBPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzIjogWyJsaWdodG5pbmdjc3NAMS4zMi4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImRldGVjdC1saWJjIjogIl4yLjAuMyIgfSwgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAibGlnaHRuaW5nY3NzLWFuZHJvaWQtYXJtNjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1kYXJ3aW4tYXJtNjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1kYXJ3aW4teDY0IjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtZnJlZWJzZC14NjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1saW51eC1hcm0tZ251ZWFiaWhmIjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251IjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtbXVzbCI6ICIxLjMyLjAiLCAibGlnaHRuaW5nY3NzLWxpbnV4LXg2NC1nbnUiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtbXVzbCI6ICIxLjMyLjAiLCAibGlnaHRuaW5nY3NzLXdpbjMyLWFybTY0LW1zdmMiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy13aW4zMi14NjQtbXN2YyI6ICIxLjMyLjAiIH0gfSwgInNoYTUxMi1OWFlCemluTnJibGZyYVBHeXJiUG9EMTlDMWg5bGZJLzFtemdXWXZYVVRlNDE0R3ovWDFGRDJYQlpTWk03clJUck1BOEpMM090QWFHaWZySUtoUTV5UT09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1hbmRyb2lkLWFybTY0IjogWyJsaWdodG5pbmdjc3MtYW5kcm9pZC1hcm02NEAxLjMyLjAiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItWUs3L0NsVHQ0a0FLMHZvNnczWCtQbm0wRDJjZjJ2UEhiaE9YZG9OdGkxR2EwYWwxUDRUQlpod2pBVHZqTndMRUJDbkt2akpjMmpRZ0hYSDBORXdsQWc9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtZGFyd2luLWFybTY0IjogWyJsaWdodG5pbmdjc3MtZGFyd2luLWFybTY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVJ6ZUc5SnU1YmFnMkJ2MS9sd2xWSnZCRTNxNlR0WHNrZFpMTEN5Zmc1cHQrSEx6OUJxbElDTzdMWk03VkhOVFRuLzVQUmhIRkJTams1bGM0Y21zY1BRPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzLWRhcndpbi14NjQiOiBbImxpZ2h0bmluZ2Nzcy1kYXJ3aW4teDY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1VK1FzQnAybS9zMndxcFVZVC82d25sYWdkWmJ0WmRuZFNtdXQvTkpxbENjTUxUV3A1bXVDcklEK0s1VUo2anFEMkJGc2hlakNZWG5pUERiTmg3M1Y4dz09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1mcmVlYnNkLXg2NCI6IFsibGlnaHRuaW5nY3NzLWZyZWVic2QteDY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSkNUaWdlZEVrc1prM3RIVFR0aG5NZFZmR2Y2MUZreThKaTJFNFlqVVRFUVgxNHhpeS9sVHpYbnUxdndpWmUzYlllMHErU3BzU0gvQ1RlRFhLNldIaWc9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtLWdudWVhYmloZiI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LWFybS1nbnVlYWJpaGZAMS4zMi4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTIteDZybm5wUmEyR0wwelFPa3Q2cnRzM1lEUHpkdUxwV3Z3QUY2RU1oWEZWWlhENHRQckJrRUZxekdvd3pDc0lXc1BqcVNLK3R5TkVPRFVCWGVlVkhTa3c9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251IjogWyJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItMG5uTXlveU9MUkpYZmJNT2lsYVNSY0xIM0p3NXo5SEROR2ZUL2d3Q1BnYURqbngwaTh3N3ZCekZMRlIxZjZDTUxLRjhnVmJlYm1rVU4zZmEva1FKcFE9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtbXVzbCI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LWFybTY0LW11c2xAMS4zMi4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1VcFFrb2VucjRVSkV6Z1ZJWXBJODBsREZ2Um1QVmc2b3Fib05IZm9INENRSWZOQStIT3JaN01vN0taUDAyZEM2TGpnaFBRSmVCc3ZYaEpvZC93bklCZz09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtZ251IjogWyJsaWdodG5pbmdjc3MtbGludXgteDY0LWdudUAxLjMyLjAiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1WN1FyNTJJaFptZEtQVnIrVnR3OG8rV0xzUUpZQ1RkOGxvSWZwRGFNUldHVVpmQk9ZRUpleUpJa3FHSURNWlB3UHgyNHBVTWZ3U3h4SThwaHIvTWJPQT09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtbXVzbCI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LXg2NC1tdXNsQDEuMzIuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLWJZY0xwK1ZiMGF3c2lYZy84MHVDUmV6Q1lITmcxL2wzbXQwZ3pIbldWOVhQMVc1c0thNS9UQ2RHV2FSL3pCTTJQZUYvSGJzUXYvajJVUk5PaVZ1eFdnPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzLXdpbjMyLWFybTY0LW1zdmMiOiBbImxpZ2h0bmluZ2Nzcy13aW4zMi1hcm02NC1tc3ZjQDEuMzIuMCIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItOFNiQzhCUjQwcFM2YmFDTThzYnRZRFN3RVZRZDRKbEZUT2xhRDNnV0dIZlRoVGNBQm5OREJkYTZlVFplcWJvZmFsSUpoRngwcUt6Z0hKbWNQVG5HZHc9PSJdLAoKICAgICJsaWdodG5pbmdjc3Mtd2luMzIteDY0LW1zdmMiOiBbImxpZ2h0bmluZ2Nzcy13aW4zMi14NjQtbXN2Y0AxLjMyLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1BbXE5Qi9Tb1pZZERpMWtGcm9qbm9xUEx4WWhRNFdvNVhpTDhFVkpyVnNCOEFSb0MxUFdXNlZHdFQwV0tDZW1qeThhQytsb3VKbmpTN1UxOHgzYjA2UT09Il0sCgogICAgIm1hZ2ljLXN0cmluZyI6IFsibWFnaWMtc3RyaW5nQDAuMzAuMjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjIjogIl4xLjUuNSIgfSB9LCAic2hhNTEyLXZkMkY0WVV5RVhLR2NMSG9xK1RFeUNqeHVlU2VIbkZ4eXlqTnA4MHlnMFhWNHZVaG5EZXIvbHZ2bHFNL2FyQjViWFFONUsyLzNvaW55Q1J5eDhUMkNRPT0iXSwKCiAgICAibmFub2lkIjogWyJuYW5vaWRAMy4zLjEyIiwgIiIsIHsgImJpbiI6IHsgIm5hbm9pZCI6ICJiaW4vbmFub2lkLmNqcyIgfSB9LCAic2hhNTEyLVpCOVJILzM5cXBxNVZ1NlkrTm1VYUZoUVI2cHArTTJYdDc2WEJuRXdEYUdjVkFxaGx2eHJsM0IyYktTNUQzTkgzUVI3NnYzYVNyS2FGL0tpeTdsRXRRPT0iXSwKCiAgICAibmV4dCI6IFsibmV4dEAxNi4yLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQG5leHQvZW52IjogIjE2LjIuNiIsICJAc3djL2hlbHBlcnMiOiAiMC41LjE1IiwgImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZyI6ICJeMi45LjE5IiwgImNhbml1c2UtbGl0ZSI6ICJeMS4wLjMwMDAxNTc5IiwgInBvc3Rjc3MiOiAiOC40LjMxIiwgInN0eWxlZC1qc3giOiAiNS4xLjYiIH0sICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBuZXh0L3N3Yy1kYXJ3aW4tYXJtNjQiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy1kYXJ3aW4teDY0IjogIjE2LjIuNiIsICJAbmV4dC9zd2MtbGludXgtYXJtNjQtZ251IjogIjE2LjIuNiIsICJAbmV4dC9zd2MtbGludXgtYXJtNjQtbXVzbCI6ICIxNi4yLjYiLCAiQG5leHQvc3djLWxpbnV4LXg2NC1nbnUiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy1saW51eC14NjQtbXVzbCI6ICIxNi4yLjYiLCAiQG5leHQvc3djLXdpbjMyLWFybTY0LW1zdmMiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy13aW4zMi14NjQtbXN2YyI6ICIxNi4yLjYiLCAic2hhcnAiOiAiXjAuMzQuNSIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJAb3BlbnRlbGVtZXRyeS9hcGkiOiAiXjEuMS4wIiwgIkBwbGF5d3JpZ2h0L3Rlc3QiOiAiXjEuNTEuMSIsICJiYWJlbC1wbHVnaW4tcmVhY3QtY29tcGlsZXIiOiAiKiIsICJyZWFjdCI6ICJeMTguMi4wIHx8IDE5LjAuMC1yYy1kZTY4ZDJmNC0yMDI0MTIwNCB8fCBeMTkuMC4wIiwgInJlYWN0LWRvbSI6ICJeMTguMi4wIHx8IDE5LjAuMC1yYy1kZTY4ZDJmNC0yMDI0MTIwNCB8fCBeMTkuMC4wIiwgInNhc3MiOiAiXjEuMy4wIiB9LCAib3B0aW9uYWxQZWVycyI6IFsiQG9wZW50ZWxlbWV0cnkvYXBpIiwgIkBwbGF5d3JpZ2h0L3Rlc3QiLCAiYmFiZWwtcGx1Z2luLXJlYWN0LWNvbXBpbGVyIiwgInNhc3MiXSwgImJpbiI6IHsgIm5leHQiOiAiZGlzdC9iaW4vbmV4dCIgfSB9LCAic2hhNTEyLXFPVmdLSmcxK0F0MTVOcGVVUCtlSmdDSHZUQ2dYc29nd2VxODdSaS9JeDdQa3FRSGc0c2RhWG1TRnFLbGdhSVhFNGtXMGcyNUxFNjhXODdVQU5sSHR3PT0iXSwKCiAgICAib2J1ZyI6IFsib2J1Z0AyLjEuMSIsICIiLCB7fSwgInNoYTUxMi11VHFGOU11UHJhQVErSXNuUGYzNjZSRzRjUDlSdFVpN01MTzFOM0tFYyt3YjBhNnlLcGVMMGxtazJJQjFqWTVLSFBBbFRjNlQvSlJkQy9ZcXhITndrUT09Il0sCgogICAgInBhdGhlIjogWyJwYXRoZUAyLjAuMyIsICIiLCB7fSwgInNoYTUxMi1XVWpHY0FxUDFnUWFjb1FlK09CSnNGQTdMZDREeVh1VUlqWjVjYzc1Y0xIdko3ZHROc1R1Z3BoeElBRHdzcFMrQXJhQVVlUENLclNWdFBMRmovRjg4dz09Il0sCgogICAgInBpY29jb2xvcnMiOiBbInBpY29jb2xvcnNAMS4xLjEiLCAiIiwge30sICJzaGE1MTIteGNlSDJzbmh0YjVNOWxpcURzbUV3NTZsZTM3Nm1UWmtFWC9qRWIvUnhORnllZ051bDdlTnNsQ1hQOUZEai9MY3UwWDhLRXlNY2VQMm50cGFIckRFVkE9PSJdLAoKICAgICJwaWNvbWF0Y2giOiBbInBpY29tYXRjaEA0LjAuNCIsICIiLCB7fSwgInNoYTUxMi1RUDg4QkFLdk1hbS8zTnhINnZqMm8yMVI2TWp4WlVBZDZubHdBUy9wbkd2TjlJVkxvY0xIeEdZSXpGaGc2ZlVRKzV0aDZQNGR2NGVXOWpYM0RTSWo3QT09Il0sCgogICAgInBvc3Rjc3MiOiBbInBvc3Rjc3NAOC41LjE1IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIm5hbm9pZCI6ICJeMy4zLjEyIiwgInBpY29jb2xvcnMiOiAiXjEuMS4xIiwgInNvdXJjZS1tYXAtanMiOiAiXjEuMi4xIiB9IH0sICJzaGE1MTItRmZSOHNqZDRlbTJUNmZiM0kyTXdBSlU3SFdWTXI5emJhK2VubVFlZVdGZkNibStVT0MvMFg0RFM4WHRwVVRNd1dNR2JqS1lQN3hqZk5la3p5R21CM0E9PSJdLAoKICAgICJyZWFjdCI6IFsicmVhY3RAMTkuMi42IiwgIiIsIHt9LCAic2hhNTEyLXNmV0dHZmF2aTB4cjhQZzBzVnN5SE1BT3ppVllLZ1BMTnJTN2lnK2l2TU5iM3diQ0J3M0t4dGZsc0dCQXdEM2dZUWxFL0FFWnNUTGdUb1JyU0NqYjBRPT0iXSwKCiAgICAicmVhY3QtZGF5LXBpY2tlciI6IFsicmVhY3QtZGF5LXBpY2tlckA5LjE0LjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGRhdGUtZm5zL3R6IjogIl4xLjQuMSIsICJAdGFiYnlfYWkvaGlqcmktY29udmVydGVyIjogIjEuMC41IiwgImRhdGUtZm5zIjogIl40LjEuMCIsICJkYXRlLWZucy1qYWxhbGkiOiAiNC4xLjAtMCIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJyZWFjdCI6ICI+PTE2LjguMCIgfSB9LCAic2hhNTEyLXRCYW9EV2pQd2UwTTVwR3J1bTRIMFNSNkx5aytCTzlvSG5wOUpiS3BHS1cybWxyYU5QZ1A5Qk1mc2c1cFdwd3Jzc0FSbWVxazdZQmwyb1h1dFpUYUhBPT0iXSwKCiAgICAicmVhY3QtZG9tIjogWyJyZWFjdC1kb21AMTkuMi42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInNjaGVkdWxlciI6ICJeMC4yNy4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgInJlYWN0IjogIl4xOS4yLjYiIH0gfSwgInNoYTUxMi0wcHJNSStodkJiUGpzV254REx4bENHeU04UE42VXVXakVVQ1ltWmhPNjd4SVY5WGFzYS9yL3ZEbnErWHlxNExvMjdnOFFTYk81WXpBUnUwRDFTcHMzZz09Il0sCgogICAgInJlcXVpcmUtZGlyZWN0b3J5IjogWyJyZXF1aXJlLWRpcmVjdG9yeUAyLjEuMSIsICIiLCB7fSwgInNoYTUxMi1mR3hFSTcrd3NHOXhydmRqc3JsbUwyMk9NVFRpSFJ3QU1yb2lFZU1ncThnem9MQy9QUXI3UnNSRFNUTFVnL2JaQVp0RitUVklrSGM2LzRSSUtydWkrUT09Il0sCgogICAgInJlc2VsZWN0IjogWyJyZXNlbGVjdEA1LjIuMCIsICIiLCB7fSwgInNoYTUxMi1BZ1ozVU9abTNZbmRmcko0T1lqZ3JUN2JtQ20vMWlxa2p2RWZIL29ZanpoNlBEMnF3NFF1VDNqam5YSXJwZHQ0TVRwTVhjbE1UM2xYYm1SWStYUmFrdz09Il0sCgogICAgInJvbGxkb3duIjogWyJyb2xsZG93bkAxLjAuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAb3hjLXByb2plY3QvdHlwZXMiOiAiPTAuMTMwLjAiLCAiQHJvbGxkb3duL3BsdWdpbnV0aWxzIjogIl4xLjAuMCIgfSwgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQHJvbGxkb3duL2JpbmRpbmctYW5kcm9pZC1hcm02NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1kYXJ3aW4tYXJtNjQiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1mcmVlYnNkLXg2NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmIjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LWFybTY0LWdudSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsIjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXBwYzY0LWdudSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1zMzkweC1nbnUiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctbGludXgteDY0LWdudSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC14NjQtbXVzbCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1vcGVuaGFybW9ueS1hcm02NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy13YXNtMzItd2FzaSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjIjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLXdpbjMyLXg2NC1tc3ZjIjogIjEuMC4xIiB9LCAiYmluIjogeyAicm9sbGRvd24iOiAiYmluL2NsaS5tanMiIH0gfSwgInNoYTUxMi1YMEtRSGxqTm5Fa1dOcXFpejl6SnJHdW5oMUIwSGdPeExYdm5GcENPY2FkemN5NXFvaFozdHFNRVVnMDB2bmNvUm92WHVLM1pxQ1Q5S25uS3pvSW5GUT09Il0sCgogICAgInJ4anMiOiBbInJ4anNANy44LjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuMS4wIiB9IH0sICJzaGE1MTItZGhLZjkwM1UvUFFaWTZib05OdEFHZFdiRzg1V0FialQvMXhZb1pJQzdGQVkweVdhcE9CUVZzVnJEbDU4Vzg2Ly9lMVZwTU5CdFJWNE1hWGZkTXlTRkE9PSJdLAoKICAgICJzY2hlZHVsZXIiOiBbInNjaGVkdWxlckAwLjI3LjAiLCAiIiwge30sICJzaGE1MTItZU52K1dyVmJLdTFmM3ZiWUpUL3h0aUY1c3lBNUhQSU10ZjlJZ1kvbktnMHNXcXpBVUV2cVkveG03T2NaYy9xYWZMeC9pTzlGZ09tZVNBcDR2NXRpL1E9PSJdLAoKICAgICJzZW12ZXIiOiBbInNlbXZlckA3LjguMCIsICIiLCB7ICJiaW4iOiB7ICJzZW12ZXIiOiAiYmluL3NlbXZlci5qcyIgfSB9LCAic2hhNTEyLUFjTTdkVi81dWw0RWVrb1EyOUFnbTV2cmk4Sk5xUnlqMzlvMHFwWDZ2REYyR1pydHV0Wmw1UndnRDFYblpqaVRBZm5jc0poTUk0OFFRSDNzTjg3WU5BPT0iXSwKCiAgICAic2hhcnAiOiBbInNoYXJwQDAuMzQuNSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAaW1nL2NvbG91ciI6ICJeMS4wLjAiLCAiZGV0ZWN0LWxpYmMiOiAiXjIuMS4yIiwgInNlbXZlciI6ICJeNy43LjMiIH0sICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtZGFyd2luLWFybTY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLWRhcndpbi14NjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWRhcndpbi14NjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybSI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgtYXJtNjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1yaXNjdjY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1zMzkweCI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgteDY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4bXVzbC14NjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saW51eC1hcm0iOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgtYXJtNjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgtcHBjNjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgtcmlzY3Y2NCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC1saW51eC1zMzkweCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC1saW51eC14NjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXhtdXNsLWFybTY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLWxpbnV4bXVzbC14NjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtd2FzbTMyIjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLXdpbjMyLWFybTY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLXdpbjMyLWlhMzIiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtd2luMzIteDY0IjogIjAuMzQuNSIgfSB9LCAic2hhNTEyLU91OUk1RnQ5V05jQ2JYclU5Y01nUEJjQ0s4TGl3THFjYnl3VzN0NG9EVjM3bjFwenB1TkxzWWlBVjhlT0RuamJ0UWxTRHdaMmNVRWVRejRFNTRIbHRnPT0iXSwKCiAgICAic2hlbGwtcXVvdGUiOiBbInNoZWxsLXF1b3RlQDEuOC4zIiwgIiIsIHt9LCAic2hhNTEyLU9ibW5JRjRoWE5nMUJxaG5IbWdiREVURjhkTFBDZ2daV0Jqa1FmaFpwYnN6Wm5ZdXI1RFVsalRjQ0hpaTVMQzNKNUUweWVPLzFMSU15SCtVdkhRZ3l3PT0iXSwKCiAgICAic2lnaW5mbyI6IFsic2lnaW5mb0AyLjAuMCIsICIiLCB7fSwgInNoYTUxMi15YngwV08xLzhiU0JMRVdYWnZFZDdnTVczU24zSkZsVzNUdlgxblJFYkRMUk5RTmFlTk44V0swbWVCd1BkQWFPSTdUdFJSUkpuL0VzMXpocnJDSHU3Zz09Il0sCgogICAgInNvdXJjZS1tYXAiOiBbInNvdXJjZS1tYXBAMC42LjEiLCAiIiwge30sICJzaGE1MTItVWpnYXB1bVdsYk1oa0JnelQ3WWtjNVlYVVQ0NkYwaUt1OFNHWHEwYmN3UDVkei9oMFBsajZlbkpxanoxWmJxMmw1V2FxWW5yVmJ3V09XTXlGM0Y0N2c9PSJdLAoKICAgICJzb3VyY2UtbWFwLWpzIjogWyJzb3VyY2UtbWFwLWpzQDEuMi4xIiwgIiIsIHt9LCAic2hhNTEyLVVYV01LaExPd1ZLYjcyOElVdFFQWHhmWVUrdXNkeWJ0VXJLLzh1R0U4Q1FNdnJoT3B3dnpEQndqMFFoU0w3TVFjN3ZJc0lTQkc4VlE4K0lEUXhwZlFBPT0iXSwKCiAgICAic291cmNlLW1hcC1zdXBwb3J0IjogWyJzb3VyY2UtbWFwLXN1cHBvcnRAMC41LjIxIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImJ1ZmZlci1mcm9tIjogIl4xLjAuMCIsICJzb3VyY2UtbWFwIjogIl4wLjYuMCIgfSB9LCAic2hhNTEyLXVCSFUzTDNjenNJeVlYS1g4OGZkckdvdnhkU0NvVEdEUlo2U1lYdFNSeExaVXpIZzVQLzY2SHQ2dW9VbEh1OUVab2QraW5YaEtvM3FRZ3dYVVQveTF3PT0iXSwKCiAgICAic3RhY2tiYWNrIjogWyJzdGFja2JhY2tAMC4wLjIiLCAiIiwge30sICJzaGE1MTItMVhNSkU1ZlFvMWpHSDZZLzdlYm53UE9CRWtJRW5UNFFGMzJkNVIxK1ZYZFh2ZU0wSUJNSnQ4emZheFgxUDNRaFZ3clllKzU3Nitqa0FOdFNTMm1CYnc9PSJdLAoKICAgICJzdGQtZW52IjogWyJzdGQtZW52QDQuMS4wIiwgIiIsIHt9LCAic2hhNTEyLVJxN3liY1gyUnVDNTVyOW9hUFZFVzcveHUzdGo4dTRHZUJZSEJXQ3ljaEZ0ek1Jcjg2QTdlM1BQRUJQVDM3c0hTdEtYMytUaVgvRnIvQUNtSkxWbExRPT0iXSwKCiAgICAic3RyaW5nLXdpZHRoIjogWyJzdHJpbmctd2lkdGhANC4yLjMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZW1vamktcmVnZXgiOiAiXjguMC4wIiwgImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50IjogIl4zLjAuMCIsICJzdHJpcC1hbnNpIjogIl42LjAuMSIgfSB9LCAic2hhNTEyLXdLeVFSUXBqSjBzSXA2MkVyU1pkR3NqTUpXc2FwNW9STmloSGh1Nkc3SlZPLzlqSUI2VXlldkwrdFh1T3Fybmc4ai9jeEtUV3lXVXd2U1RyaWlaei9nPT0iXSwKCiAgICAic3RyaXAtYW5zaSI6IFsic3RyaXAtYW5zaUA2LjAuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJhbnNpLXJlZ2V4IjogIl41LjAuMSIgfSB9LCAic2hhNTEyLVkzOFZQU0hjcWtGckNwRm5ROXZ1U1htcXV1djVvWE9LcEdlVDZhR3JyM28zR2M5QWxWYTZKQmZVU09DbmJ4R0daRisvMG9vSTdLclB1VVN6dFVkVTVBPT0iXSwKCiAgICAic3R5bGVkLWpzeCI6IFsic3R5bGVkLWpzeEA1LjEuNiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjbGllbnQtb25seSI6ICIwLjAuMSIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJyZWFjdCI6ICI+PSAxNi44LjAgfHwgMTcueC54IHx8IF4xOC4wLjAtMCB8fCBeMTkuMC4wLTAiIH0gfSwgInNoYTUxMi1xU1Z5RFRlTW90ZHZRWW9IV0xOR3dSRkpIQytpK1p2ZEJSWW9zT0ZnQytXZzF2eDRmck4yL1JHL05BN1NZcXF2S05MZjM5UDJMU1JBMnB1Nm4wWFlaQT09Il0sCgogICAgInN1cHBvcnRzLWNvbG9yIjogWyJzdXBwb3J0cy1jb2xvckA4LjEuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJoYXMtZmxhZyI6ICJeNC4wLjAiIH0gfSwgInNoYTUxMi1NcFVFTjJPb2R0VXp4dktRbDcyY1VGN1JRNUVpSHNHdlNzVkcwaWE5YzVSYldHTDJDSTRDN0VwUFM4VVRCSXBsbmx6WmlOdVY1NncrRnVOeHkzdHkyUT09Il0sCgogICAgInRhaWx3aW5kLW1lcmdlIjogWyJ0YWlsd2luZC1tZXJnZUAzLjYuMCIsICIiLCB7fSwgInNoYTUxMi11eEw3cUFWUXJpcVJRUEF5SzNwajY2VnFza1dxb1ozN1BXOTRqd09Ud05mcS96OW95dTFWK2VxclpxdFIyK2ZDaVhkWU9aZS9Nb2R0OEd0dnFOenUrdz09Il0sCgogICAgInRhaWx3aW5kY3NzIjogWyJ0YWlsd2luZGNzc0A0LjMuMCIsICIiLCB7fSwgInNoYTUxMi15Nm54TUdCMW5NVzlSNms5NmU1Z2RJRnpjZkwvZ1RKUk5hcUdlczFZdmtMblBWWHpXZ2JxRkYyeUxDMFQ4Rzc3NG4yNGN4M1BlOFhyS29uaUNPQUgrUT09Il0sCgogICAgInRhcGFibGUiOiBbInRhcGFibGVAMi4zLjMiLCAiIiwge30sICJzaGE1MTItdXhjL3pwcUZnNng3Qzh2T0U3bGg2TGJkYThlRUw5em1WbS9QTGVUUEJSaGgxeENnZFdhUStKMUNVaWVHcElmbTJIZHRzVXBSditIc2hpYXNCTWNjNkE9PSJdLAoKICAgICJ0ZXJzZXIiOiBbInRlcnNlckA1LjE2LjkiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlLW1hcCI6ICJeMC4zLjIiLCAiYWNvcm4iOiAiXjguNS4wIiwgImNvbW1hbmRlciI6ICJeMi4yMC4wIiwgInNvdXJjZS1tYXAtc3VwcG9ydCI6ICJ+MC41LjIwIiB9LCAiYmluIjogeyAidGVyc2VyIjogImJpbi90ZXJzZXIiIH0gfSwgInNoYTUxMi1IUGEvRmRUQjlYR0kySDEva2VMRlpIeGw2V052QUk0WWFsSEd0RFFUbE1uSmNvcVNhYjFVd0w0bDFoR0VoczYvR21MSEJaSWcvWWdCKytqY2J6b09FZz09Il0sCgogICAgInRpbnliZW5jaCI6IFsidGlueWJlbmNoQDIuOS4wIiwgIiIsIHt9LCAic2hhNTEyLTArRFV2cVdNVmFsTG1oYTZscjRrRDhpQU1LMUh6VjAvYUtuQ3RXYjl2OTY0MVRuUC9NRmI3UGMyYnhveFFqVFhBRXJyeVhWZ1VPZnYyWXFObGxxR2VnPT0iXSwKCiAgICAidGlueWV4ZWMiOiBbInRpbnlleGVjQDEuMS4yIiwgIiIsIHt9LCAic2hhNTEyLWRBcVNxRS9SYWJwQktJOCtoMjZHZkxxNlZiM0pWWHMzMFhZUWpkTWphai9jMnRTOElZWU1iSXpQNTk5S3RSajdjNTcvd1lBcGIzUWpnUmdYbXJDdWtBPT0iXSwKCiAgICAidGlueWdsb2JieSI6IFsidGlueWdsb2JieUAwLjIuMTYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZmRpciI6ICJeNi41LjAiLCAicGljb21hdGNoIjogIl40LjAuNCIgfSB9LCAic2hhNTEyLXBuOTlWaG9BQ1lSOG5GSGh4cWl4K3V2c2JYaW5lQWFzV201b2pYb044eEV3SzVLZDMvVHJoTm4xd0J5dUQ1MlV4V1JMeThwdStrUk1uaUVpNkVxOVpnPT0iXSwKCiAgICAidGlueXJhaW5ib3ciOiBbInRpbnlyYWluYm93QDMuMS4wIiwgIiIsIHt9LCAic2hhNTEyLUJmK0lMbUJncmV0VXJkSnh6WE0wU2dYTFozWGZpYVV1T2ovSUtRSHVUWGlwKzA1WG4rdXlFWWRWZzBrWURpcFRCY0xyQ1Z5VXpBUHo3UW1BcmIwbW13PT0iXSwKCiAgICAidHJlZS1raWxsIjogWyJ0cmVlLWtpbGxAMS4yLjIiLCAiIiwgeyAiYmluIjogeyAidHJlZS1raWxsIjogImNsaS5qcyIgfSB9LCAic2hhNTEyLUwwT3JwaThxR3BSRy8vTmQrSDkwdkZCKzNpSG51ZTF6U1NHbU5PT0NoMUdMSjdyVUtWd1YySHZpanBoR1FTMlVtaFVaZXdTOVZndnhZSWRncitmRzFBPT0iXSwKCiAgICAidHNsaWIiOiBbInRzbGliQDIuOC4xIiwgIiIsIHt9LCAic2hhNTEyLW9KRnU5NEhRYitLVmR1U1VRTDd3bnBtcW5mbUxzT0EvbkFoNmI2RUgwd0NFb0swL21QZVhVNmMzd0tEVjgzTWtPdUhQUkh0U1hLS1U5OUlCYXpTLzJ3PT0iXSwKCiAgICAidHlwZXNjcmlwdCI6IFsidHlwZXNjcmlwdEA1LjkuMyIsICIiLCB7ICJiaW4iOiB7ICJ0c2MiOiAiYmluL3RzYyIsICJ0c3NlcnZlciI6ICJiaW4vdHNzZXJ2ZXIiIH0gfSwgInNoYTUxMi1qbDF2WnpQRGluTHI5ZVV0M0ovdDdWNkZnTkV3OVFqdkJQZHlzejlLZlFERDQxZlFyQzJZNHZLUWRpYVVwRlQ0YlhsYjFSSGhMcHA4d3RtNk01VGdTdz09Il0sCgogICAgInVuZGljaS10eXBlcyI6IFsidW5kaWNpLXR5cGVzQDYuMjEuMCIsICIiLCB7fSwgInNoYTUxMi1pd0RacWcwUUFHcmc5UmF2NUg0bjBNNjRjM21rUjU5Y0o2d1FwKzdDNG5JMGdzbUV4YWVkYVlMTk80NGVUNEF0QkJ3amJUaUdQTWx0Mk1kMFQ5SDlKUT09Il0sCgogICAgInVzZS1zeW5jLWV4dGVybmFsLXN0b3JlIjogWyJ1c2Utc3luYy1leHRlcm5hbC1zdG9yZUAxLjYuMCIsICIiLCB7ICJwZWVyRGVwZW5kZW5jaWVzIjogeyAicmVhY3QiOiAiXjE2LjguMCB8fCBeMTcuMC4wIHx8IF4xOC4wLjAgfHwgXjE5LjAuMCIgfSB9LCAic2hhNTEyLVBwNkdTd0dQL05yUElyeFZGQUlrT1FleXc4bEZlbk9IaWpRV2tVVHJEdnJGNEFMcXlsUDJDL0tDa2VTOWRwVU0zS3ZZUlFobmE1dnQ3SUw5NStaUTl3PT0iXSwKCiAgICAidml0ZSI6IFsidml0ZUA4LjAuMTMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAibGlnaHRuaW5nY3NzIjogIl4xLjMyLjAiLCAicGljb21hdGNoIjogIl40LjAuNCIsICJwb3N0Y3NzIjogIl44LjUuMTQiLCAicm9sbGRvd24iOiAiMS4wLjEiLCAidGlueWdsb2JieSI6ICJeMC4yLjE2IiB9LCAib3B0aW9uYWxEZXBlbmRlbmNpZXMiOiB7ICJmc2V2ZW50cyI6ICJ+Mi4zLjMiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL25vZGUiOiAiXjIwLjE5LjAgfHwgPj0yMi4xMi4wIiwgIkB2aXRlanMvZGV2dG9vbHMiOiAiXjAuMS4xOCIsICJlc2J1aWxkIjogIl4wLjI3LjAgfHwgXjAuMjguMCIsICJqaXRpIjogIj49MS4yMS4wIiwgImxlc3MiOiAiXjQuMC4wIiwgInNhc3MiOiAiXjEuNzAuMCIsICJzYXNzLWVtYmVkZGVkIjogIl4xLjcwLjAiLCAic3R5bHVzIjogIj49MC41NC44IiwgInN1Z2Fyc3MiOiAiXjUuMC4wIiwgInRlcnNlciI6ICJeNS4xNi4wIiwgInRzeCI6ICJeNC44LjEiLCAieWFtbCI6ICJeMi40LjIiIH0sICJvcHRpb25hbFBlZXJzIjogWyJAdHlwZXMvbm9kZSIsICJAdml0ZWpzL2RldnRvb2xzIiwgImVzYnVpbGQiLCAiaml0aSIsICJsZXNzIiwgInNhc3MiLCAic2Fzcy1lbWJlZGRlZCIsICJzdHlsdXMiLCAic3VnYXJzcyIsICJ0ZXJzZXIiLCAidHN4IiwgInlhbWwiXSwgImJpbiI6IHsgInZpdGUiOiAiYmluL3ZpdGUuanMiIH0gfSwgInNoYTUxMi1NRnRqQllnem1TeG1nQTRSQWZqSXlYV3BHZTFvQUxuamdVVHp6VjdRTHgvVEt4Q3pqdE1INkZkOS9lVksrNUZnMXFOb3o1VkF3c21Ncy9Ob2ZybUp2dz09Il0sCgogICAgInZpdGVzdCI6IFsidml0ZXN0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvZXhwZWN0IjogIjQuMS42IiwgIkB2aXRlc3QvbW9ja2VyIjogIjQuMS42IiwgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6ICI0LjEuNiIsICJAdml0ZXN0L3J1bm5lciI6ICI0LjEuNiIsICJAdml0ZXN0L3NuYXBzaG90IjogIjQuMS42IiwgIkB2aXRlc3Qvc3B5IjogIjQuMS42IiwgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAiZXMtbW9kdWxlLWxleGVyIjogIl4yLjAuMCIsICJleHBlY3QtdHlwZSI6ICJeMS4zLjAiLCAibWFnaWMtc3RyaW5nIjogIl4wLjMwLjIxIiwgIm9idWciOiAiXjIuMS4xIiwgInBhdGhlIjogIl4yLjAuMyIsICJwaWNvbWF0Y2giOiAiXjQuMC4zIiwgInN0ZC1lbnYiOiAiXjQuMC4wLXJjLjEiLCAidGlueWJlbmNoIjogIl4yLjkuMCIsICJ0aW55ZXhlYyI6ICJeMS4wLjIiLCAidGlueWdsb2JieSI6ICJeMC4yLjE1IiwgInRpbnlyYWluYm93IjogIl4zLjEuMCIsICJ2aXRlIjogIl42LjAuMCB8fCBeNy4wLjAgfHwgXjguMC4wIiwgIndoeS1pcy1ub2RlLXJ1bm5pbmciOiAiXjIuMy4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBlZGdlLXJ1bnRpbWUvdm0iOiAiKiIsICJAb3BlbnRlbGVtZXRyeS9hcGkiOiAiXjEuOS4wIiwgIkB0eXBlcy9ub2RlIjogIl4yMC4wLjAgfHwgXjIyLjAuMCB8fCA+PTI0LjAuMCIsICJAdml0ZXN0L2Jyb3dzZXItcGxheXdyaWdodCI6ICI0LjEuNiIsICJAdml0ZXN0L2Jyb3dzZXItcHJldmlldyI6ICI0LjEuNiIsICJAdml0ZXN0L2Jyb3dzZXItd2ViZHJpdmVyaW8iOiAiNC4xLjYiLCAiQHZpdGVzdC9jb3ZlcmFnZS1pc3RhbmJ1bCI6ICI0LjEuNiIsICJAdml0ZXN0L2NvdmVyYWdlLXY4IjogIjQuMS42IiwgIkB2aXRlc3QvdWkiOiAiNC4xLjYiLCAiaGFwcHktZG9tIjogIioiLCAianNkb20iOiAiKiIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkBlZGdlLXJ1bnRpbWUvdm0iLCAiQG9wZW50ZWxlbWV0cnkvYXBpIiwgIkB0eXBlcy9ub2RlIiwgIkB2aXRlc3QvYnJvd3Nlci1wbGF5d3JpZ2h0IiwgIkB2aXRlc3QvYnJvd3Nlci1wcmV2aWV3IiwgIkB2aXRlc3QvYnJvd3Nlci13ZWJkcml2ZXJpbyIsICJAdml0ZXN0L2NvdmVyYWdlLWlzdGFuYnVsIiwgIkB2aXRlc3QvY292ZXJhZ2UtdjgiLCAiQHZpdGVzdC91aSIsICJoYXBweS1kb20iLCAianNkb20iXSwgImJpbiI6IHsgInZpdGVzdCI6ICJ2aXRlc3QubWpzIiB9IH0sICJzaGE1MTItNmx2amJTM3A5YjRDcmRDbWd1emJoMi80dW9YaEdFMnE3MVI0T1g1c3FGOVIxYm85WGQ2ZkdyTUFmdnA1d25DemxCbkZWZENPcDZvbnVUUVZibzhpVVE9PSJdLAoKICAgICJ3aHktaXMtbm9kZS1ydW5uaW5nIjogWyJ3aHktaXMtbm9kZS1ydW5uaW5nQDIuMy4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInNpZ2luZm8iOiAiXjIuMC4wIiwgInN0YWNrYmFjayI6ICIwLjAuMiIgfSwgImJpbiI6IHsgIndoeS1pcy1ub2RlLXJ1bm5pbmciOiAiY2xpLmpzIiB9IH0sICJzaGE1MTItaFVybWFXQmRWRGN4dllxbnloMDl6dW5LelJPV2piWlRpTnk4ZEJFamtTN2VoRURRaWJYSjdYdmxtdGJ3dVRjbFVpSXlOK0N5WFFENFZta284Zk5tOHc9PSJdLAoKICAgICJ3cmFwLWFuc2kiOiBbIndyYXAtYW5zaUA3LjAuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJhbnNpLXN0eWxlcyI6ICJeNC4wLjAiLCAic3RyaW5nLXdpZHRoIjogIl40LjEuMCIsICJzdHJpcC1hbnNpIjogIl42LjAuMCIgfSB9LCAic2hhNTEyLVlWR0lqMmthbUxTVHh3Nk5zWmpvQnhmU3dzbjB5Y2Rlc21jNHArUTIxYzV6UHVaMXBsK05meFZkeFB0ZEh2bU5WT1E2WFNZRzRBVXR5dC9GaTdEMTZRPT0iXSwKCiAgICAieTE4biI6IFsieTE4bkA1LjAuOCIsICIiLCB7fSwgInNoYTUxMi0wcGZGemVnZURXSkhKSUFtVExSUDJEd0hqZEY1czdqbzl0dXp0ZFF4QWhJTkNkdlMrM25HSU5xUGQwMEFwaHFKUi8wTGhBTlVTNi8rN1NDYjk4WU9mQT09Il0sCgogICAgInlhbWwiOiBbInlhbWxAMi45LjAiLCAiIiwgeyAiYmluIjogeyAieWFtbCI6ICJiaW4ubWpzIiB9IH0sICJzaGE1MTItMkF2aE5YM21iOHpkNlp5N0lOVHRTcGwxRjE1SFc2V25xajBzcldsa0tMY3BZbC9nTUlNSml5dUdxMktlSTJZRnhVUGpkbEIrM0xjMTBzZU1MdEw0Y0E9PSJdLAoKICAgICJ5YXJncyI6IFsieWFyZ3NAMTcuNy4yIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImNsaXVpIjogIl44LjAuMSIsICJlc2NhbGFkZSI6ICJeMy4xLjEiLCAiZ2V0LWNhbGxlci1maWxlIjogIl4yLjAuNSIsICJyZXF1aXJlLWRpcmVjdG9yeSI6ICJeMi4xLjEiLCAic3RyaW5nLXdpZHRoIjogIl40LjIuMyIsICJ5MThuIjogIl41LjAuNSIsICJ5YXJncy1wYXJzZXIiOiAiXjIxLjEuMSIgfSB9LCAic2hhNTEyLTdkU3p6UlErK0NLbk5JL2tyS25ZUlY3SktLUFVYTUVoNjFzb2FIS2c5bXJXRWh6RldoRm54UHhHbCs2OWNEMU91NjNDMTNOVVBDbm1JY3J2cUN1TTZ3PT0iXSwKCiAgICAieWFyZ3MtcGFyc2VyIjogWyJ5YXJncy1wYXJzZXJAMjEuMS4xIiwgIiIsIHt9LCAic2hhNTEyLXRWcHNKVzdEZGplY0FpRnBiSUIxZTNxeElRc0U2Tm9QYzUvZVRkcmJiSUM0aDBMVnNXaG5vYTNnK20ySGNsQkl1akh6c3haNFZKVkErR1V1YzIvTEJ3PT0iXSwKCiAgICAiem9kIjogWyJ6b2RANC40LjMiLCAiIiwge30sICJzaGE1MTIteXRFTkZqSUpGbDJVd1lnbGRlMmpjaFcySHdtNEdKRkxEaVNYV2RUckpRQklOOUZjeXA3bjREaHhKRWlXTkFKTVYxL0JxV2ZXL2trZzcxVURjSEp5VFE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQGVtbmFwaS9jb3JlIjogWyJAZW1uYXBpL2NvcmVAMS4xMC4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvd2FzaS10aHJlYWRzIjogIjEuMi4xIiwgInRzbGliIjogIl4yLjQuMCIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTIteXE2T2tKNHA4MkNBZlBsMHU5bVFlYlFIS1BKa1k3V3JJdWsyMDVjVFluWWUrazJaOFlCaDExRnJiUkcvSDZpaGlycWNhY09nbDJCSU84b3lNUUxlWHc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQGVtbmFwaS9ydW50aW1lIjogWyJAZW1uYXBpL3J1bnRpbWVAMS4xMC4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRzbGliIjogIl4yLjQuMCIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItZXd2WWxrODZ4VW9HSTB6UVJOcS9tQysxNlIxUWVEbEtReTIxS2kzb1NZWE5nTGI0NUdWMVA2QTBNKy9zNm55Q3VORHFlNVZwYVk4NEJ6WEd3VmJ3RkE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQGVtbmFwaS93YXNpLXRocmVhZHMiOiBbIkBlbW5hcGkvd2FzaS10aHJlYWRzQDEuMi4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRzbGliIjogIl4yLjQuMCIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItdVRJSTdPWUYrL01lcy9NcmNJT1lwNXlPdFNNTEJXU0lvTFBwY2d3aXBvaUtibGk2azMyMnRjb0ZzeG9JSXhQRHFXMDFTUUdBZ2tvNEV6WmkyQk52Mnc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQG5hcGktcnMvd2FzbS1ydW50aW1lIjogWyJAbmFwaS1ycy93YXNtLXJ1bnRpbWVAMS4xLjQiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHR5YnlzL3dhc20tdXRpbCI6ICJeMC4xMC4xIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvY29yZSI6ICJeMS43LjEiLCAiQGVtbmFwaS9ydW50aW1lIjogIl4xLjcuMSIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItM05RTk5nQTFZU2xKYi9rTUgxaWxkQVNQOUhXNy83a1luUkkyc3pXSmFvZmFTMWhXbWJHSTRIK2QzKzIyYUd6WFhOOUlKK24rR2lGVmNHaXBKUDE4b3c9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQHR5YnlzL3dhc20tdXRpbCI6IFsiQHR5YnlzL3dhc20tdXRpbEAwLjEwLjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9LCAiYnVuZGxlZCI6IHRydWUgfSwgInNoYTUxMi1Sb0J2SjJYMHd1S2xXRklqcndmZkd3MUlxWkhLUXF6SWNoS2FhZFpaZm5OcHNBWXAybU0waDM2SnRQQ2pOREFIR2dZZXovMTV1TUJwZkd3Y2hoaU1nZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS13YXNtMzItd2FzaS90c2xpYiI6IFsidHNsaWJAMi44LjEiLCAiIiwgeyAiYnVuZGxlZCI6IHRydWUgfSwgInNoYTUxMi1vSkZ1OTRIUWIrS1ZkdVNVUUw3d25wbXFuZm1Mc09BL25BaDZiNkVIMHdDRW9LMC9tUGVYVTZjM3dLRFY4M01rT3VIUFJIdFNYS0tVOTlJQmF6Uy8ydz09Il0sCgogICAgImNoYWxrL3N1cHBvcnRzLWNvbG9yIjogWyJzdXBwb3J0cy1jb2xvckA3LjIuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJoYXMtZmxhZyI6ICJeNC4wLjAiIH0gfSwgInNoYTUxMi1xcENBdlJsOXN0dU9IdmVLc243SG5jSlJ2djUwMXFJYWNLelFsTy8rTHd4YzkrMHEyd0x5djREZnZ0ODAvRFBuMnBxT0JzSmREaW9nWEdSOStPdndSdz09Il0sCgogICAgIm5leHQvcG9zdGNzcyI6IFsicG9zdGNzc0A4LjQuMzEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAibmFub2lkIjogIl4zLjMuNiIsICJwaWNvY29sb3JzIjogIl4xLjAuMCIsICJzb3VyY2UtbWFwLWpzIjogIl4xLjAuMiIgfSB9LCAic2hhNTEyLVBTMDhJYm9pYTltdHMvMnlnVjNlTHBZNWdoblVjZkxWL0VYVE9XMUUycVl4SktHR0JVdE5qTjc2RllIbk1zMzZSbUFSbjQxYkMwQVptbityUjBPVnBRPT0iXSwKICB9Cn0K" }, { "path": "metadata.json", "kind": "text", "content": '{\n "id": "grocery",\n "name": "Grocery",\n "tagline": "High-SKU grocery storefront with quick-add cart UX and delivery windows.",\n "industry": "retail",\n "tags": ["food", "grocery", "delivery"],\n "stability": "stable",\n "schemaType": "GroceryStore",\n "mock": {\n "seedName": "grocery",\n "seedBusinessId": "bus_freshmart"\n }\n}\n' }, { "path": "next.config.ts", "kind": "text", "content": 'import type { NextConfig } from "next";\n\n// Same-origin proxy target for the storefront API. The public key\n// decides: a real `cpk_live_\u2026` / `cpk_test_\u2026` only resolves against\n// hosted Cimplify, so browser cart writes go to the same place the\n// server catalogue reads come from. Anything else (`mock-dev`, empty)\n// falls back to the local `cimplify dev` mock in dev.\nconst publicKey = process.env.NEXT_PUBLIC_CIMPLIFY_PUBLIC_KEY?.trim() ?? "";\nconst keyTargetsHostedCimplify =\n publicKey.startsWith("cpk_live_") || publicKey.startsWith("cpk_test_");\nconst STOREFRONT_URL =\n process.env.NODE_ENV === "production" || keyTargetsHostedCimplify\n ? "https://storefronts.cimplify.io"\n : "http://127.0.0.1:8787";\n\nif (STOREFRONT_URL === "http://127.0.0.1:8787") {\n console.warn(\n "[cimplify] next.config resolved the local storefront API URL; production deploys must run with NODE_ENV=production.",\n );\n}\n\n// Cache Components (\'use cache\' + cacheTag/cacheLife) require Node-specific\n// setTimeout atomicity and serialize a postponed state that routinely exceeds\n// CF Workers\' 128MB zlib limit. We\'re on Cloudflare Workers via opennext, so\n// we stay on Next 16\'s "Previous Model" \u2014 `fetch.next.{revalidate,tags}` via\n// the SDK\'s `cacheOptions`, plus `export const revalidate` per page. See\n// https://nextjs.org/docs/app/guides/caching-without-cache-components.\nconst nextConfig: NextConfig = {\n async redirects() {\n return [\n { source: "/login", destination: "/account", permanent: false },\n { source: "/signup", destination: "/account", permanent: false },\n ];\n },\n async rewrites() {\n return [\n { source: "/api/v1/:path*", destination: `${STOREFRONT_URL}/api/v1/:path*` },\n { source: "/img/:path*", destination: `${STOREFRONT_URL}/img/:path*` },\n { source: "/elements/:path*", destination: `${STOREFRONT_URL}/elements/:path*` },\n { source: "/_mock/:path*", destination: `${STOREFRONT_URL}/_mock/:path*` },\n ];\n },\n images: {\n loader: "custom",\n loaderFile: "./lib/cimplify-loader.ts",\n remotePatterns: [\n { protocol: "http", hostname: "127.0.0.1", port: "8787", pathname: "/img/**" },\n { protocol: "http", hostname: "localhost", port: "8787", pathname: "/img/**" },\n { protocol: "http", hostname: "localhost", port: "3000", pathname: "/img/**" },\n { protocol: "https", hostname: "loremflickr.com", pathname: "/**" },\n { protocol: "https", hostname: "images.unsplash.com", pathname: "/**" },\n { protocol: "https", hostname: "static-tmp.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "storefrontassetscdn.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "cdn.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "res.cloudinary.com", pathname: "/cimplify/**" },\n ],\n },\n};\n\nexport default nextConfig;\n' }, { "path": "CLAUDE.md", "kind": "text", "content": "# CLAUDE.md\n\nThis project was scaffolded from a Cimplify storefront template (`cimplify init`).\n\n## Read these first\n\n- **`AGENTS.md`** at the project root \u2014 the file \u2194 `brand.X` field map for *this template's* industry, plus the architectural rules.\n- **`.claude/skills/cimplify-storefront/SKILL.md`** \u2014 the playbook for common tasks (rebrand, add a section, wire a Server Action, deploy, eject a component). Invoke it whenever you're asked to change content, palette, copy, or routing.\n\n## The two-line summary\n\n1. **Edit `lib/brand.ts`** for any visible string.\n2. **Edit `app/globals.css` `@theme` block** for any palette / radius / font change.\n\nThat covers ~95% of what merchants ask for. For anything else, follow the `cimplify-storefront` skill.\n\n## Don't do\n\n- Hardcode strings in pages or components.\n- Enable `cacheComponents: true` in `next.config.ts` \u2014 we're on Cloudflare Workers, where `'use cache'` postponed state blows past CF's 128MB zlib limit. This template stays on Next 16's \"Previous Model\" (ISR): `export const revalidate` per page + `cacheOptions: { revalidate, tags }` on SDK reads.\n- Add `'use cache'`, `cacheTag`, or `cacheLife` anywhere. Use the SDK's `cacheOptions` instead.\n- Use `unstable_cache` \u2014 it's gone in Next 16. Use SDK `cacheOptions` or `fetch.next.{revalidate,tags}`.\n- Run `bun test` (Bun's `vi` shim is incomplete) \u2014 use `bun run test:run`.\n" }, { "path": "app/about/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `About \u2014 ${brand.name}`,\n description: brand.description,\n};\n\nexport default function AboutPage() {\n const a = brand.about;\n const titleParts = a.title.split("\\n");\n return (\n <article className="max-w-3xl mx-auto px-6 sm:px-8 py-16">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2">\n {a.eyebrow}\n </p>\n <h1 className="font-serif text-[clamp(2.25rem,5vw,3.5rem)] font-semibold mb-6 -tracking-[0.02em]">\n {titleParts.map((line, i) => (\n <span key={i}>\n {line}\n {i < titleParts.length - 1 && <br />}\n </span>\n ))}\n </h1>\n <div className="prose prose-lg max-w-none space-y-5 text-foreground/90 leading-relaxed">\n {a.paragraphs.map((p, i) => (\n <p key={i}>{p}</p>\n ))}\n {a.sections.map((s) => (\n <div key={s.heading}>\n <h2 className="font-serif text-3xl font-semibold mt-10 mb-3">{s.heading}</h2>\n <p>{s.body}</p>\n </div>\n ))}\n </div>\n </article>\n );\n}\n' }, { "path": "app/llms.txt/route.ts", "kind": "text", "content": 'import { getServerClient, tags, type Product } from "@cimplify/sdk/server";\nimport { brand } from "@/lib/brand";\nimport { getSiteUrl } from "@/lib/site-url";\n\nexport const revalidate = 3600;\n\nasync function buildLlmsTxt(SITE_URL: string): Promise<string> {\n const client = getServerClient();\n const [productsRes, categoriesRes, collectionsRes] = await Promise.all([\n client.catalogue.getProducts(\n { limit: 500 },\n { cacheOptions: { revalidate: 3600, tags: [tags.products()] } },\n ),\n client.catalogue.getCategories({\n cacheOptions: { revalidate: 3600, tags: [tags.categories()] },\n }),\n client.catalogue.getCollections({\n cacheOptions: { revalidate: 3600, tags: [tags.collections()] },\n }),\n ]);\n\n const products: Product[] = productsRes.ok ? productsRes.value.items : [];\n const categories = categoriesRes.ok ? categoriesRes.value : [];\n const collections = collectionsRes.ok ? collectionsRes.value : [];\n\n const lines: string[] = [];\n lines.push(`# ${brand.name}`);\n lines.push("");\n lines.push(`> ${brand.llms.summary}`);\n lines.push("");\n lines.push("## Browse");\n lines.push(`- [Home](${SITE_URL}/)`);\n lines.push(`- [Shop](${SITE_URL}/shop): Full menu with filter and sort.`);\n\n if (categories.length > 0) {\n lines.push("");\n lines.push("## Categories");\n for (const c of categories) {\n lines.push(\n `- [${c.name}](${SITE_URL}/categories/${c.slug})${c.description ? `: ${c.description}` : ""}`,\n );\n }\n }\n\n if (collections.length > 0) {\n lines.push("");\n lines.push("## Collections");\n for (const c of collections) {\n lines.push(\n `- [${c.name}](${SITE_URL}/collections/${c.slug})${c.description ? `: ${c.description}` : ""}`,\n );\n }\n }\n\n if (products.length > 0) {\n lines.push("");\n lines.push("## Products");\n for (const p of products) {\n const slug = p.slug ?? p.id;\n const price = `${brand.currency} ${p.default_price}`;\n const desc = p.description ? ` \u2014 ${p.description.replace(/\\s+/g, " ").slice(0, 200)}` : "";\n lines.push(`- [${p.name}](${SITE_URL}/shop?product=${slug}) (${price})${desc}`);\n }\n }\n\n lines.push("");\n lines.push("## Information");\n lines.push(`- [About](${SITE_URL}/about)`);\n lines.push(`- [FAQ](${SITE_URL}/faq)`);\n lines.push(`- [Terms of Service](${SITE_URL}/terms)`);\n lines.push(`- [Privacy Policy](${SITE_URL}/privacy)`);\n lines.push(`- [Sitemap (XML)](${SITE_URL}/sitemap.xml)`);\n lines.push("");\n lines.push("## Contact");\n lines.push(`- Email: ${brand.contact.email}`);\n lines.push(`- Phone: ${brand.contact.phone}`);\n lines.push(`- Address: ${brand.contact.address}`);\n\n return lines.join("\\n") + "\\n";\n}\n\n/**\n * `/llms.txt` \u2014 machine-readable site index for LLMs (per llmstxt.org).\n * Lets coding agents and chat assistants find products, categories, and\n * support pages without scraping HTML. Plain Markdown so it streams cheaply\n * into context windows.\n */\nexport async function GET(): Promise<Response> {\n const body = await buildLlmsTxt(await getSiteUrl());\n return new Response(body, {\n headers: {\n "Content-Type": "text/plain; charset=utf-8",\n "Cache-Control": "public, max-age=0, s-maxage=3600, stale-while-revalidate=86400",\n },\n });\n}\n' }, { "path": "app/contact/contact-form.tsx", "kind": "text", "content": `"use client";
|
|
4418
|
+
` }, { "path": "lib/site-url.ts", "kind": "text", "content": 'import { SITE_URL } from "./site.config";\n\n/** Canonical absolute URL for this storefront. */\nexport async function getSiteUrl(): Promise<string> {\n return SITE_URL;\n}\n' }, { "path": "lib/cimplify-loader.ts", "kind": "text", "content": 'import type { ImageLoader } from "next/image";\n\nimport { assetUrl, isCimplifyAsset } from "@cimplify/sdk";\n\nconst cdnBase = process.env.NEXT_PUBLIC_CIMPLIFY_CDN_URL?.trim() || undefined;\n\nconst cimplifyImageLoader: ImageLoader = ({ src, width, quality }) => {\n if (isCimplifyAsset(src, cdnBase)) {\n return assetUrl(src, {\n base: cdnBase,\n w: width,\n quality,\n format: "auto",\n });\n }\n return src;\n};\n\nexport default cimplifyImageLoader;\n' }, { "path": "lib/cart.ts", "kind": "text", "content": '"use client";\n\nimport { useCart } from "@cimplify/sdk/react";\n\n/**\n * Reactive cart count for the header pill. Subscribes to the SDK cart\n * state \u2014 updates immediately on add / remove / quantity change.\n */\nexport function useCartCount(): { count: number } {\n const { itemCount } = useCart();\n return { count: itemCount };\n}\n' }, { "path": ".gitignore", "kind": "text", "content": "node_modules\n.next\n.open-next\nout\n.env\n.env.local\n.env*.local\n.DS_Store\n*.tsbuildinfo\nnext-env.d.ts\n" }, { "path": "package.json", "kind": "text", "content": '{\n "name": "__STOREFRONT_NAME__",\n "private": true,\n "version": "0.0.0",\n "scripts": {\n "dev": "concurrently -k -n mock,next -c blue,magenta \\"cimplify-mock --seed grocery --quiet\\" \\"next dev\\"",\n "dev:storefront": "next dev",\n "dev:mock": "cimplify-mock --seed grocery",\n "build": "next build",\n "start": "next start",\n "typecheck": "tsc --noEmit",\n "test": "vitest",\n "test:run": "vitest run",\n "check:brand": "vitest run __tests__/brand.test.ts",\n "check:cart": "vitest run __tests__/cart-flow.test.ts",\n "check:contract": "vitest run __tests__/contract.test.ts",\n "check": "bun run typecheck && bun run test:run"\n },\n "dependencies": {\n "@cimplify/sdk": "^0.57.0",\n "next": "^16.2.6",\n "react": "^19.0.0",\n "react-dom": "^19.0.0"\n },\n "devDependencies": {\n "@tailwindcss/postcss": "^4.2.4",\n "@types/node": "^22.10.0",\n "@types/react": "^19.0.0",\n "@types/react-dom": "^19.0.0",\n "concurrently": "^9.0.0",\n "tailwindcss": "^4.2.4",\n "typescript": "^5.9.3",\n "vitest": "^4.1.5"\n }\n}\n' }, { "path": "bun.lock", "kind": "binary", "content": "ewogICJsb2NrZmlsZVZlcnNpb24iOiAxLAogICJjb25maWdWZXJzaW9uIjogMSwKICAid29ya3NwYWNlcyI6IHsKICAgICIiOiB7CiAgICAgICJuYW1lIjogIl9fU1RPUkVGUk9OVF9OQU1FX18iLAogICAgICAiZGVwZW5kZW5jaWVzIjogewogICAgICAgICJAY2ltcGxpZnkvc2RrIjogIl4wLjU0LjAiLAogICAgICAgICJuZXh0IjogIl4xNi4yLjYiLAogICAgICAgICJyZWFjdCI6ICJeMTkuMC4wIiwKICAgICAgICAicmVhY3QtZG9tIjogIl4xOS4wLjAiLAogICAgICB9LAogICAgICAiZGV2RGVwZW5kZW5jaWVzIjogewogICAgICAgICJAdGFpbHdpbmRjc3MvcG9zdGNzcyI6ICJeNC4yLjQiLAogICAgICAgICJAdHlwZXMvbm9kZSI6ICJeMjIuMTAuMCIsCiAgICAgICAgIkB0eXBlcy9yZWFjdCI6ICJeMTkuMC4wIiwKICAgICAgICAiQHR5cGVzL3JlYWN0LWRvbSI6ICJeMTkuMC4wIiwKICAgICAgICAiY29uY3VycmVudGx5IjogIl45LjAuMCIsCiAgICAgICAgInRhaWx3aW5kY3NzIjogIl40LjIuNCIsCiAgICAgICAgInR5cGVzY3JpcHQiOiAiXjUuOS4zIiwKICAgICAgICAidml0ZXN0IjogIl40LjEuNSIsCiAgICAgIH0sCiAgICB9LAogIH0sCiAgInBhY2thZ2VzIjogewogICAgIkBhbGxvYy9xdWljay1scnUiOiBbIkBhbGxvYy9xdWljay1scnVANS4yLjAiLCAiIiwge30sICJzaGE1MTItVXJjQUJCKzRiVXJGQUJ3Ymx1VElCRXJYd3Zic1UvVjdUWldmbWJnSmZia3dpQnV6aVM5Z3hkT0RVeXVpZWNmZEdRODVqZ2xNVzZqdVMzK3o1VHNLTHc9PSJdLAoKICAgICJAYmFiZWwvcnVudGltZSI6IFsiQGJhYmVsL3J1bnRpbWVANy4yOS4yIiwgIiIsIHt9LCAic2hhNTEyLUppRFNoSDQ1ektIV3lHZTRaTlZSckNqQno4Tmg5VE1tWkcxa2g0UVRLOGhDQlRXQmk4RGEraTdzMWZKdzcvbFlwTTRjY2VwU05mcXpaL1F2QUJCaTVnPT0iXSwKCiAgICAiQGJhc2UtdWkvcmVhY3QiOiBbIkBiYXNlLXVpL3JlYWN0QDEuNS4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBiYWJlbC9ydW50aW1lIjogIl43LjI5LjIiLCAiQGJhc2UtdWkvdXRpbHMiOiAiMC4yLjkiLCAiQGZsb2F0aW5nLXVpL3JlYWN0LWRvbSI6ICJeMi4xLjgiLCAiQGZsb2F0aW5nLXVpL3V0aWxzIjogIl4wLjIuMTEiLCAidXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUiOiAiXjEuNi4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBkYXRlLWZucy90eiI6ICJeMS4yLjAiLCAiQHR5cGVzL3JlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgImRhdGUtZm5zIjogIl40LjAuMCIsICJyZWFjdCI6ICJeMTcgfHwgXjE4IHx8IF4xOSIsICJyZWFjdC1kb20iOiAiXjE3IHx8IF4xOCB8fCBeMTkiIH0sICJvcHRpb25hbFBlZXJzIjogWyJAZGF0ZS1mbnMvdHoiLCAiQHR5cGVzL3JlYWN0IiwgImRhdGUtZm5zIl0gfSwgInNoYTUxMi16MWdTQWxjZWQxeVkraU0rbUhERXRJa0Q4VUkzRWJzNTJNdUJQeHZWNmY1aFJ1dGsreHZDSC93dUI3aERxRHpLOUpHNUZvTXo1bmhycXRTczF3anQxQT09Il0sCgogICAgIkBiYXNlLXVpL3V0aWxzIjogWyJAYmFzZS11aS91dGlsc0AwLjIuOSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYmFiZWwvcnVudGltZSI6ICJeNy4yOS4yIiwgIkBmbG9hdGluZy11aS91dGlscyI6ICJeMC4yLjExIiwgInJlc2VsZWN0IjogIl41LjEuMSIsICJ1c2Utc3luYy1leHRlcm5hbC1zdG9yZSI6ICJeMS42LjAiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL3JlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgInJlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgInJlYWN0LWRvbSI6ICJeMTcgfHwgXjE4IHx8IF4xOSIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkB0eXBlcy9yZWFjdCJdIH0sICJzaGE1MTIteC9QRERDWXpvcVBwanJkeWIzVmN5eWxUSTJJalVYRXRZREdpNWZvaDdLc25tTkpJSWFWd0EyR0xnREgxZHBzMUdnWGlKYkE2MGhNK0F5dVRmUXpJdnc9PSJdLAoKICAgICJAY2ltcGxpZnkvc2RrIjogWyJAY2ltcGxpZnkvc2RrQDAuNTQuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYmFzZS11aS9yZWFjdCI6ICJeMS40LjEiLCAiY2xzeCI6ICJeMi4xLjEiLCAiZGF0ZS1mbnMiOiAiXjQuMS4wIiwgImxpYnBob25lbnVtYmVyLWpzIjogIjEuMTIuNDEiLCAicmVhY3QtZGF5LXBpY2tlciI6ICJeOS4xNC4wIiwgInRhaWx3aW5kLW1lcmdlIjogIl4zLjUuMCIsICJ6b2QiOiAiXjQuNC4zIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBwYXlzdGFjay9pbmxpbmUtanMiOiAiXjIuMjIuOCIsICJtc3ciOiAiPj0yLjAuMCIsICJyZWFjdCI6ICI+PTE3LjAuMCIsICJ2aXRlc3QiOiAiPj0yLjAuMCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkBwYXlzdGFjay9pbmxpbmUtanMiLCAibXN3IiwgInJlYWN0IiwgInZpdGVzdCJdLCAiYmluIjogeyAiY2ltcGxpZnktbW9jayI6ICJkaXN0L21vY2svY2xpLm1qcyIgfSB9LCAic2hhNTEyLVlVTi9sT3FWaUhjaTF2OVVTV1d3QVd0eTI5cEVYQmRMVHVLYXJTbDhFcGFmV2g1amtkR1oxUStOZTkvYmZnVFptUjhpVFVsdEE4VTdnbFYyRm9SU2dnPT0iXSwKCiAgICAiQGRhdGUtZm5zL3R6IjogWyJAZGF0ZS1mbnMvdHpAMS40LjEiLCAiIiwge30sICJzaGE1MTItUDVMVU5odGJqNllmSTNpSmp3NUVMOWVVQUc2T2l0RDBXM2ZXUWNwUWpEUmMvUUlzTDB0Uk51TzFQY0R2UGNjV0wxZlNUWFhkRTFkcytsOTVEVi9PRkE9PSJdLAoKICAgICJAZW1uYXBpL2NvcmUiOiBbIkBlbW5hcGkvY29yZUAxLjEwLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGVtbmFwaS93YXNpLXRocmVhZHMiOiAiMS4yLjEiLCAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTIteXE2T2tKNHA4MkNBZlBsMHU5bVFlYlFIS1BKa1k3V3JJdWsyMDVjVFluWWUrazJaOFlCaDExRnJiUkcvSDZpaGlycWNhY09nbDJCSU84b3lNUUxlWHc9PSJdLAoKICAgICJAZW1uYXBpL3J1bnRpbWUiOiBbIkBlbW5hcGkvcnVudGltZUAxLjEwLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTItZXd2WWxrODZ4VW9HSTB6UVJOcS9tQysxNlIxUWVEbEtReTIxS2kzb1NZWE5nTGI0NUdWMVA2QTBNKy9zNm55Q3VORHFlNVZwYVk4NEJ6WEd3VmJ3RkE9PSJdLAoKICAgICJAZW1uYXBpL3dhc2ktdGhyZWFkcyI6IFsiQGVtbmFwaS93YXNpLXRocmVhZHNAMS4yLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTItdVRJSTdPWUYrL01lcy9NcmNJT1lwNXlPdFNNTEJXU0lvTFBwY2d3aXBvaUtibGk2azMyMnRjb0ZzeG9JSXhQRHFXMDFTUUdBZ2tvNEV6WmkyQk52Mnc9PSJdLAoKICAgICJAZXNidWlsZC9haXgtcHBjNjQiOiBbIkBlc2J1aWxkL2FpeC1wcGM2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYWl4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi0xVkNJQ1d5cGVRS2hWYkU5b1cvc0phQW1qTHhoVnFhY2RrdlBMRWp3bHR0amZ3RU5SU0NsUzhFakJ6MEt6UnlGU0NQRElrdVhXMzRKZS92azd6ZEI3UT09Il0sCgogICAgIkBlc2J1aWxkL2FuZHJvaWQtYXJtIjogWyJAZXNidWlsZC9hbmRyb2lkLWFybUAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtIiB9LCAic2hhNTEyLVFOZFFFcHM3RGZGd0UzaFhpVTRCWmVPVjY4SEh6WXdHZDBOdGhoZDN1Q2trRUtLNy9SNk1UZ00wUDdIN0ZBczVwVS9ESVdzdmlNbUVHeEVveElaK1pRPT0iXSwKCiAgICAiQGVzYnVpbGQvYW5kcm9pZC1hcm02NCI6IFsiQGVzYnVpbGQvYW5kcm9pZC1hcm02NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItYkJ5NjlwZ2ZoTUd0Q253cEMveDVRaGZ4QXovY0JnUTllbmJ0d2pmNlY5bG5QSS9oTXlUOWlXcFIxYXJtMGwza3R0VHI0TDBLU0xwS21McC9pbEtTOUE9PSJdLAoKICAgICJAZXNidWlsZC9hbmRyb2lkLXg2NCI6IFsiQGVzYnVpbGQvYW5kcm9pZC14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImFuZHJvaWQiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1UVmhkVnRRSUZ1VnBJSVIyODJidGNHQzJvR1FvU2ZaZm1CZFRpcDJhbkNhVlljcVdsWlhHY2RjS0lVa2xmWDJ3ajBKa2xOWWd6MzlPQnFoMmNxWHZjUT09Il0sCgogICAgIkBlc2J1aWxkL2Rhcndpbi1hcm02NCI6IFsiQGVzYnVpbGQvZGFyd2luLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVkxZ2lDZk00bmxIRFdFZlNja016ZVdOZFFTMzFCUUdzOS9yb3V3NlViOTF0a0s3OWFJTVRIM3E5eEh2ekg4ZDB3RHJ1NUNpMGtXQjhiM3VwL25sMTZnPT0iXSwKCiAgICAiQGVzYnVpbGQvZGFyd2luLXg2NCI6IFsiQGVzYnVpbGQvZGFyd2luLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiZGFyd2luIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItQ0pzcnk4WkdNNVZGVmV5VVlCM2NkS3BkL0g2OVBZZXo0ZUpoMVcvdDM4dnp1dGRqRWp0UDdoQjZlTEtCb09keGNBbEN0RVlIelEvUEovb1U5STR1MEE9PSJdLAoKICAgICJAZXNidWlsZC9mcmVlYnNkLWFybTY0IjogWyJAZXNidWlsZC9mcmVlYnNkLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi15WXErMzlObFRSelUyWG1vUFc0bDVJZnBsOWZxU2swbkFKWU0vVi9XVUdQRUZmZWsxZXBMSEpJa1RRTTZiQnMxc3dBcGpPNW5XZ3ZyODQzZzZUanh1UT09Il0sCgogICAgIkBlc2J1aWxkL2ZyZWVic2QteDY0IjogWyJAZXNidWlsZC9mcmVlYnNkLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiZnJlZWJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLTBGZ3ZPSjZVVU1mbHNIU1BMemRmRG5uQkJWb0NEdEJUVnluL01yV2xvVU52cS81U0ZtaDEzbDNkdmdSUGtEaWhSeGI3N1kxN01icWJDQWEyc3RyTVFRPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtYXJtIjogWyJAZXNidWlsZC9saW51eC1hcm1AMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTIta3JvNGMwUDg1R01mRllxVzRUV09wdm1GOHJGU2hiV0duckxxbHpwNFgxVE5XalJZM0pNWVVmREN0T3hQS09JWThCMFdDOEhONTFoR1A0STRoejRBYVE9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1hcm02NCI6IFsiQGVzYnVpbGQvbGludXgtYXJtNjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi0rODlVc1FUZlhkbWpJdlpTNm5Vbk9PTG9YbmtVVEI5aFI1UUFlTHJRZHpPU1dadk5TQVhBdGNSREhXdHFBVXRBbXY3Wk0xV1BPT2VTeER6enpNb2dpUT09Il0sCgogICAgIkBlc2J1aWxkL2xpbnV4LWlhMzIiOiBbIkBlc2J1aWxkL2xpbnV4LWlhMzJAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJpYTMyIiB9LCAic2hhNTEyLXlURWpvYXB5OFVQM3J2OGRCMGlwM0FmTXBSYnloU04zK2hZOG1vL2k0UVhGZUR4bWlZYkVLcDNaUmpCS2NPUDg2MlVhNGIxUERmd2x2YnV3WTdoSUdRPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtbG9vbmc2NCI6IFsiQGVzYnVpbGQvbGludXgtbG9vbmc2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItTmVxcVlrcmNHekZ3aTZDR1JHTk1PaldHR1NZT3Bxd0NqUzlmdmFVbFg1czN6d090bjFxd2cxczJpRTJzdkJlNFEvWU9HMXE2ODc1bGNBb1FLL0Y0VkE9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1taXBzNjRlbCI6IFsiQGVzYnVpbGQvbGludXgtbWlwczY0ZWxAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJub25lIiB9LCAic2hhNTEyLUljdlRsRjlkdExyZkwvTThXZ05JL3FKWUJFTlAzZWtnc0hiWVVJekV6cTVYSnp6VkVWL2ZYWTlXRlBmRUVYbXUzY2sycUpQOExHL3AzUThmN1pjMlhnPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtcHBjNjQiOiBbIkBlc2J1aWxkL2xpbnV4LXBwYzY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAicHBjNjQiIH0sICJzaGE1MTItSE95MGFMVEpUVnRvVGVHWmg0SFNYYU82TTk1cXU0azVsSmNINGd4djU2aWF5Y2Z6MVM4R08vNUpoNlg0WTFZaUkwaDdjUnlMaStIaXhNUis4OHN3YWc9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1yaXNjdjY0IjogWyJAZXNidWlsZC9saW51eC1yaXNjdjY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1pOEpVREF1ZnB6OWpPem80eUlTaENUY1h6UzA3dkVnV3p5WDNOSDJHN0xFRlZnckxFaGp3TDNhakZFNGZaSTNJNFpnaU03SkgzR1E3UmVPYlJPdlNVQT09Il0sCgogICAgIkBlc2J1aWxkL2xpbnV4LXMzOTB4IjogWyJAZXNidWlsZC9saW51eC1zMzkweEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogInMzOTB4IiB9LCAic2hhNTEyLWpGbnUrNlViTGx6SWpQUXBXQ05oNVF0cmNOZk1MamdJYXZud1BRQWZvR3g0cTE3b2NPVTlNc1EyUVZ2Rnh3UW9XcFpUOER2VExvb1R2bU9RWGtPNTFnPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgteDY0IjogWyJAZXNidWlsZC9saW51eC14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItNmUwY3ZYd3pPblZXSkhxK21za1A4RE5TcktCcjFiVUxCdm5GTHBjMUtZK2QraXJaU2daMDJUR3NlNUZzYWZLUzVqZzJlNHBidks2VFBYYUYvQTYrQ0E9PSJdLAoKICAgICJAZXNidWlsZC9uZXRic2QtYXJtNjQiOiBbIkBlc2J1aWxkL25ldGJzZC1hcm02NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibm9uZSIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItdlVua0JZeFpXNGhML2llOTFoU3FhU05qdWxPbllYRTFWU0x1c252SGcydTNqZXdKQnozWXpCOStvQ3c4REFCZVZxWkdnOTR0OXR5WkZvSG1hOGdXWlE9PSJdLAoKICAgICJAZXNidWlsZC9uZXRic2QteDY0IjogWyJAZXNidWlsZC9uZXRic2QteDY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJub25lIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItWEFnOHBJUW41Q3poT0I4b2RJY0FtNDJRc09mYTk4U0JlS1VkbzR4YThPdlg4TGJNWnFFdGdlV0U5UC9XeHQ3TWxHMlFxdmpHdGhzK25xNDhUclVpS3c9PSJdLAoKICAgICJAZXNidWlsZC9vcGVuYnNkLWFybTY0IjogWyJAZXNidWlsZC9vcGVuYnNkLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJvcGVuYnNkIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1DdDJXY0ZFQU5sRkR0cDFuVkFYU05CUER4eVUrajcrdElkLy9pSFhVMmYvbE41QW1PNHpMeWhEY3BSNUN6MXIwOG1WeHp0M0pweXQ0UG1YUTFPNis3QT09Il0sCgogICAgIkBlc2J1aWxkL29wZW5ic2QteDY0IjogWyJAZXNidWlsZC9vcGVuYnNkLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAib3BlbmJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLXhBR0doeU9ROU90bTFYdThOVDFpZkdMbkE2TTNzSnhaNml4eWxiK3ZJVVZ6dnZkNkdPQUxwd1FyWXJ0bFBvdU1xZC92U2JnZWh6NkhhVms0KzdBZmh3PT0iXSwKCiAgICAiQGVzYnVpbGQvc3Vub3MteDY0IjogWyJAZXNidWlsZC9zdW5vcy14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogInN1bm9zIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItTXcrdHp5NHBwNndaRUswK0x3cjc2cFdManJ0am1KeVVCMjN0SEtxRURQNzRSM3E5NWx1WS9iWHFYWmVZbDROWWx2d09xb1JLbEluUWlhbGdDS3k2N1E9PSJdLAoKICAgICJAZXNidWlsZC93aW4zMi1hcm02NCI6IFsiQGVzYnVpbGQvd2luMzItYXJtNjRAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1BVlVQNDI4VlFUU2RkZ3V6OWRPOW5nYitFNWFTY3lnN25PZUpEckYxSFBZdTU1NWdtemEzYkRHTVBobVZYTDhzdkRTb3FQQ3NDUGpiMjY1eUcva0xLUT09Il0sCgogICAgIkBlc2J1aWxkL3dpbjMyLWlhMzIiOiBbIkBlc2J1aWxkL3dpbjMyLWlhMzJAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJpYTMyIiB9LCAic2hhNTEyLWkxc1crMWkrb1d2UXpTZ2ZSY3h4RzJrNEk5bjNPOU5ScXk4VSt1dWdhVDJEeTdrTE85WTd3STcyaGFPYWh4Y2VNWDhoWkF6Z0dvdTFGaG5kUmxkeFJnPT0iXSwKCiAgICAiQGVzYnVpbGQvd2luMzIteDY0IjogWyJAZXNidWlsZC93aW4zMi14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItbk9UMnZaTnc2aEorejQzb1AxU1BlYS9HLzZBYk42WCtiR05oTnVxOE50Ukh5NHdzTWh3NzY1SUtMTm1uamVrN0d2aldCWVE4UTVWQm9ZVEZnOXkxVVE9PSJdLAoKICAgICJAZmxvYXRpbmctdWkvY29yZSI6IFsiQGZsb2F0aW5nLXVpL2NvcmVAMS43LjUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGZsb2F0aW5nLXVpL3V0aWxzIjogIl4wLjIuMTEiIH0gfSwgInNoYTUxMi0xSWg0V1RXeXcwK2xLeUZNY0JIR2JiNVU1RnR1SEp1dWpveXlyNXpUYVdTNUVZTWVUNkpiMkF1RGVmdHNDc0V1Y2hPK21NMmlqNStxOWNyaHlkekxoUT09Il0sCgogICAgIkBmbG9hdGluZy11aS9kb20iOiBbIkBmbG9hdGluZy11aS9kb21AMS43LjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGZsb2F0aW5nLXVpL2NvcmUiOiAiXjEuNy41IiwgIkBmbG9hdGluZy11aS91dGlscyI6ICJeMC4yLjExIiB9IH0sICJzaGE1MTItOWdaU0FJNVhNMzY4ODBQUE1tLy85ZGZpRW5nWW9DNkFtMml6RVMxRkY0MDZZRnNqdnlCTW1lSjJnNFNBanUzeFd3dHV5bk5SRkwyczloZ3hwTEk1U1E9PSJdLAoKICAgICJAZmxvYXRpbmctdWkvcmVhY3QtZG9tIjogWyJAZmxvYXRpbmctdWkvcmVhY3QtZG9tQDIuMS44IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBmbG9hdGluZy11aS9kb20iOiAiXjEuNy42IiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgInJlYWN0IjogIj49MTYuOC4wIiwgInJlYWN0LWRvbSI6ICI+PTE2LjguMCIgfSB9LCAic2hhNTEyLWNDNTJiSHdNL24vQ3hTODdGSDB5V2RuZ0VacmpkdExXL3FWcnVvNjhxZytwcks3WlE0WUdkdXQyR3lEVnBvR2VBWWUvaDg5OXJWZU9WbTZPaTQwazJBPT0iXSwKCiAgICAiQGZsb2F0aW5nLXVpL3V0aWxzIjogWyJAZmxvYXRpbmctdWkvdXRpbHNAMC4yLjExIiwgIiIsIHt9LCAic2hhNTEyLVJpQi95SWg3OHBjSXhsNmxMTUcwQ2dCWEFaMlkwZVZIcU1QWXVndSs5VTBBZVQ2WUJlaUpwZjdsYmRKTkl1Z0ZQNVNJandOUmdvNERoUjFReGkyNkdnPT0iXSwKCiAgICAiQGltZy9jb2xvdXIiOiBbIkBpbWcvY29sb3VyQDEuMS4wIiwgIiIsIHt9LCAic2hhNTEyLVRkNzZxN2o1N28vdExWZGdTNzQ2Y1lBUmZTeXhrOGlFZlJ4ZXdMOWg0T016WWhiVzRUQWNwcGwwbVQ0ZXlxWGRkaDZML2p3b003NW1vN2l4YS9wQ2VRPT0iXSwKCiAgICAiQGltZy9zaGFycC1kYXJ3aW4tYXJtNjQiOiBbIkBpbWcvc2hhcnAtZGFyd2luLWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiAiMS4yLjQiIH0sICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLWltdFEzV01KWGJNWTRmeGIvTmRwNkhCVE5WdFdDVUkwV2RvYnloZUdmNSthZDZ4WDhWSURPOHUyeEU0cWMvZnIwOENLRy83ZERzZUZ0bjZNNmcvcjN3PT0iXSwKCiAgICAiQGltZy9zaGFycC1kYXJ3aW4teDY0IjogWyJAaW1nL3NoYXJwLWRhcndpbi14NjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWRhcndpbi14NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1ZTkVGQUYvNEtRL1BlVzBOK3IrYVZWc29JWTAvcXh4aWtGMlNXZHArTlJrbU1CN3k5TEJaQVZxUTR5aEdDbS9IM0gyNzBPU3lrcW1RTUtMQmhCSkRFdz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjRAMS4yLjQiLCAiIiwgeyAib3MiOiAiZGFyd2luIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi16cWpqbzdSYXRGZkZvUDBNa1E1MWpmdUZaQm5WRTJwUmlheWRLSjFHL3JIWnZuc3JIQU9jUUFMSWk5c0E1Y281eGVuUWRUdWdDdnRiMWN1Zjc4VmY0Zz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4teDY0IjogWyJAaW1nL3NoYXJwLWxpYnZpcHMtZGFyd2luLXg2NEAxLjIuNCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi0xSU9kNXhmVmhsR3dYK3pYdjJOOTNrMHlNT052VWxBTnlsYkp3MWVUYWg4Sy9KdHBpMTVLQytXU2lhWC9uQm1ibTJIeFJNMWdaMG5TZGpTc3JaYkdLZz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm0iOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm1AMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybSIgfSwgInNoYTUxMi1iRkk3eGNLRkVMZGlOQ1ZvdjhlNDRJYTR1MmJ5QStsM1h0c0FqK1E4dGZDd082QlE4aURvallkdm9QTXFzS0RrdW9PbytYNkhaQTBzMHExMUFOTVE4QT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm02NCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybTY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1leGNqWDhEZnNJY0oxMHgxS3pyNFJjV2UxZWRDOVBxdURSUlB4M1lWQ3ZRditVNXA3WWluMnMzMmZ0emlrWG9qYjFQSUZjLzlNdDI4L3kraVJrbGtydz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1wcGM2NCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi1GTXV2R2lqTERZRzZsVytiL1V2eWlsVVd1NUF5dSszcjJkMVM4bm90aUdDSXlZVS83NmVpZzFVZk1ta1o3dndnT3J6S3psUWJGU3VRZmdtN0dZVVBwQT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1yaXNjdjY0IjogWyJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgtcmlzY3Y2NEAxLjIuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1vVkRiY1I0elVDMGNlODJ0ZXViU20reDZFVGl4dEtaQmgvcWJSRUlPY0kzY1VMekR5YjE4U3IvV2N5eDdOUlFlUXpPaUhUTmJaRkYxVXdQUzJzY3lHQT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1zMzkweCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXMzOTB4QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJzMzkweCIgfSwgInNoYTUxMi1xbXA5VnJ6Z1BnTW9HWnlQdnJRSHFrMDJ1eWpBMC9RclRPMjZUcWs2bDRaVjBNUFdJVzZMVGtxT0lvditKMXlFdTdNYkZRYURwd2R3SktoYkp2dVJ4UT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjRAMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi10SnhpaUxzbUhjOUF4MWJ6M29hT1lCVVJUWEdJUkRPREJxaHZlVkhvbnJISjkvK2s4OXFiTGwwYmNKbnMrZTR0NHJ2YU5CeGFFWnNGdFNmQWRxdVBydz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjRAMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLUZWUUh1d3gxSUl1Tm93OVFBYllVekorRW44S2NWbTlMazUrdUdVUUpIYVptTUVDWm1PbGl4OUhuSDduMVRSa1hNUzBwR3hJSm9rSVZCOVN1cVpHR1h3PT0iXSwKCiAgICAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4bXVzbC14NjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wteDY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItK0xweUJrN0w0NFpJWHd6L1ZZZmdsYVgvb2t4ZXpFU2M2VXhEU295bzJLczZKeGM0WTdzR2pwZ1U5czRQTWdxZ2pqMWdaQ3lsVGllTmFtcUExTUY3RGc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4LWFybSI6IFsiQGltZy9zaGFycC1saW51eC1hcm1AMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybSI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItOWRMcXN2d3RnMXV1WEJHWktzeGVtOTU5NSt1anYwc0o2Vmk4d2NUQU5TRnB3Vi9HT05hdDVlQ2t6UW8vMU82elJJa2gwbS84KzVCanJScjdqRFVTWnc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4LWFybTY0IjogWyJAaW1nL3NoYXJwLWxpbnV4LWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm02NCI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1iS1F6YUpSWS9ia1BPWHlLeDVFVnVwN3FrYW9qRUNHNk5MWXN3Z2t0T1pqYVhlY1NBZUNXaVp3d2lGZjMvWStPMUhyYXVpRTNGVnNHeEZnOGMyNHJaZz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGludXgtcHBjNjQiOiBbIkBpbWcvc2hhcnAtbGludXgtcHBjNjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0IjogIjEuMi40IiB9LCAib3MiOiAibGludXgiLCAiY3B1IjogInBwYzY0IiB9LCAic2hhNTEyLTd6em53TmFxVzZZdHNmckdHREE2QlJrSVNLQUFFMUpvMFFkcE5ZWE5NSHUyKzBkVHJQZmxUTE5rcGM4bDdNVVA1TTE2WkpjVXZ5c1ZXV3JNZWZacXVBPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eC1yaXNjdjY0IjogWyJAaW1nL3NoYXJwLWxpbnV4LXJpc2N2NjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXJpc2N2NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi01MWdKdUxQVEthN3BpWVBhVnM4R21CeW83L1U3LzdUWk9xK2NuWEpJSFpLYXZJUkhBUDc3ZTNOMkhFbDNkZ2lxZEQvdzB5VWZpSm5JSTc3UHVEREZkdz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGludXgtczM5MHgiOiBbIkBpbWcvc2hhcnAtbGludXgtczM5MHhAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXMzOTB4IjogIjEuMi40IiB9LCAib3MiOiAibGludXgiLCAiY3B1IjogInMzOTB4IiB9LCAic2hhNTEyLW5RdENrMFBkS2ZobzNlQzVNcmJRb2lnSjJnZDFDZ2RkVU1rYWJVaityQmV2czh0WjJjVUxPeDQ2RTdveVgrMDRXR2ZBQmdJd21NQzBWcWllVGlSNGpnPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eC14NjQiOiBbIkBpbWcvc2hhcnAtbGludXgteDY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLU1FemQ4SFBLeFZ4VmVud0FhK0pSUHdFQzdRRmpvUFd1UzVOWm5CdDZCM3B1N0VHMkdlMGlkMW9MSFpwUEpkbjNPUUsrQlFEaXc5elN0aUhCVEpRUVFRPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eG11c2wtYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGludXhtdXNsLWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItZnBySlI2R3RSc010Nkt5ZnE0NElzQ2hWWmVHTjk3Z1REMzMxd2VSMWV4MWMxcnlwREVBQk42VG0yeGExd0U2bFliNURkRW5rMDNOWlBxQTdJZDIxeWc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4bXVzbC14NjQiOiBbIkBpbWcvc2hhcnAtbGludXhtdXNsLXg2NEAwLjM0LjUiLCAiIiwgeyAib3B0aW9uYWxEZXBlbmRlbmNpZXMiOiB7ICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXhtdXNsLXg2NCI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSmc4d05UMU1Vekl2aEJGeFZpcXJFaFdER3pxeW1vM3NWN3o3WnNhV2JaTkRMWFJKWm9SR3JqdWxwNjBZWXRWNHdmWThWSUtjV2lkam9qbExjV3JkOFE9PSJdLAoKICAgICJAaW1nL3NoYXJwLXdhc20zMiI6IFsiQGltZy9zaGFycC13YXNtMzJAMC4zNC41IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvcnVudGltZSI6ICJeMS43LjAiIH0sICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1PZFdURWlWa1kyUEh3cWtiQkk4ZnJGeFFRRmVrSGFTU2tVSUprd3pjbFdaZTY0TzFYNFVsVWpxcXFMYVBiVXBNT1FrNkZCdS9IdGxHWE5ibElzMGh1dz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzItYXJtNjQiOiBbIkBpbWcvc2hhcnAtd2luMzItYXJtNjRAMC4zNC41IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1XUTNBZ1dDV1lTYjJ5dCtJRzhtbkM2SmRrOVdoczdPMGd4cGhibHNMdmRoU3BTVHRtdTY5WkcxR2tiNk51dnhzTkFDd2lQVjZjTlNaTnp0MEtQc3c3Zz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzItaWEzMiI6IFsiQGltZy9zaGFycC13aW4zMi1pYTMyQDAuMzQuNSIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAiaWEzMiIgfSwgInNoYTUxMi1GVjltLzdObWVDbVNIREQ1ajQrNHBOSThDcDNhVytKdkxvWGNUVW8wSXF5alNmQVpKOGRJVW1pangxcWFKc0lpVStIb3N3NnhNNUtpakFXUkpDU2dOZz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzIteDY0IjogWyJAaW1nL3NoYXJwLXdpbjMyLXg2NEAwLjM0LjUiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi0rMjlZTXNxWTIvOWVGRWlXOTNlcVdudUxjV2N1Zm93WGV3d1NOSVQ2VXdaZFVVQ3JNM29Gak1XSC9aNi9UTW1iNGhsRmVubWZBVmJwV2V1cDJqcnlDdz09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogWyJAanJpZGdld2VsbC9nZW4tbWFwcGluZ0AwLjMuMTMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjIjogIl4xLjUuMCIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjQiIH0gfSwgInNoYTUxMi0ya2t0LzduaUo2TWdFUHhGMGJZZFE2ZXRaYUErZlF2RGNMS2NraHkxeUlRT3phb0tqQkJqU2o2My9hTFZqWUUzcWhSdDVkdk0rdVV5ZkNnNlVLQ0JiQT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3JlbWFwcGluZyI6IFsiQGpyaWRnZXdlbGwvcmVtYXBwaW5nQDIuMy41IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogIl4wLjMuNSIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjQiIH0gfSwgInNoYTUxMi1MSTl1LytsYVlHNERzMVRES1NKVzJZUHJJbGNWWU93aTJmVUM2eEI0M2x1ZUNqZ3hWNGxmZk9DWkN0WUZpSDZUTk9YK3RRS1h4OTdUNElLSGJoeUhFUT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3Jlc29sdmUtdXJpIjogWyJAanJpZGdld2VsbC9yZXNvbHZlLXVyaUAzLjEuMiIsICIiLCB7fSwgInNoYTUxMi1iUklTZ0NJalAyMC90YldTUFdNRWk1NFFWUFJaRXhrdUQ5bEpMK1VJeFVLdHdWSkE4d1cxVHJiMWpNczFSRlhvMUNCVE5aLzVocEM5UXZtS1dkb3BLdz09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3NvdXJjZS1tYXAiOiBbIkBqcmlkZ2V3ZWxsL3NvdXJjZS1tYXBAMC4zLjExIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogIl4wLjMuNSIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjUiIH0gfSwgInNoYTUxMi1aTXAxVjhaRmNQRzVkSVduUUxyM05TSTFNaUNVN1VFVGRTL0EwRzhWL1hXSHZKdjNac0ZxdXRKbjFZNVJQbUFQWDZGM0JpRTM5N09xdmVVLzlOQ3VJQT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3NvdXJjZW1hcC1jb2RlYyI6IFsiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjQDEuNS41IiwgIiIsIHt9LCAic2hhNTEyLWNZUTkzMTBncnF4dWVXYmwrV3VJVUlhaVVhRGNqN1dPcTVmVmhFbGpOVmdSZk9VaFk5ZnkyelR2Zm9xV3NuZWJoOFNsNzBWU2NGYklDdkpuTEtCME9nPT0iXSwKCiAgICAiQGpyaWRnZXdlbGwvdHJhY2UtbWFwcGluZyI6IFsiQGpyaWRnZXdlbGwvdHJhY2UtbWFwcGluZ0AwLjMuMzEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvcmVzb2x2ZS11cmkiOiAiXjMuMS4wIiwgIkBqcmlkZ2V3ZWxsL3NvdXJjZW1hcC1jb2RlYyI6ICJeMS40LjE0IiB9IH0sICJzaGE1MTItenpOUitTZFFTREp6Yzhqb2FlUDhRUW9DUXI4TnVZeDJkSUl5dGwxUWVCRVpISjl1VzZoZWJzcllnYno4aEp3VVFhbzNUV0NNdG1mVjhOdTF0d09MQXc9PSJdLAoKICAgICJAbmFwaS1ycy93YXNtLXJ1bnRpbWUiOiBbIkBuYXBpLXJzL3dhc20tcnVudGltZUAxLjEuNCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAdHlieXMvd2FzbS11dGlsIjogIl4wLjEwLjEiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQGVtbmFwaS9jb3JlIjogIl4xLjcuMSIsICJAZW1uYXBpL3J1bnRpbWUiOiAiXjEuNy4xIiB9IH0sICJzaGE1MTItM05RTk5nQTFZU2xKYi9rTUgxaWxkQVNQOUhXNy83a1luUkkyc3pXSmFvZmFTMWhXbWJHSTRIK2QzKzIyYUd6WFhOOUlKK24rR2lGVmNHaXBKUDE4b3c9PSJdLAoKICAgICJAbmV4dC9lbnYiOiBbIkBuZXh0L2VudkAxNi4yLjYiLCAiIiwge30sICJzaGE1MTItZ2Q4SG9ITjR1Zmo3M1dtUjNKbVZvbHJwSlI0N0lMSzZMb3VQNXhFbFBnbGFWeGlyNmUxYTdWenZUdkRXa09vUFhUOXJra1R6eUN4QnU0eWVaZlp3Y3c9PSJdLAoKICAgICJAbmV4dC9zd2MtZGFyd2luLWFybTY0IjogWyJAbmV4dC9zd2MtZGFyd2luLWFybTY0QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVpKR2trY05mWWdyck1rcU9kWjd6b0xhMVRPeTBxcGNNZmsvejRNaC9GS1V6NDBnVk8rSE5RV3FtTHhmNjdaNVdCNjREUnAwZGhFYnlIZmVsKzZzSlVnPT0iXSwKCiAgICAiQG5leHQvc3djLWRhcndpbi14NjQiOiBbIkBuZXh0L3N3Yy1kYXJ3aW4teDY0QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi12L1lMQkhJWTEzMkNlZDNwdUJKN1lKS3cxbHFzQ3JnY05vMmFSSmxDRXlRcnJDZVJKbHZHbG5teGhQeE5RSTNLRTNOMURONXI5VFBOUHZrYTNucTVSUT09Il0sCgogICAgIkBuZXh0L3N3Yy1saW51eC1hcm02NC1nbnUiOiBbIkBuZXh0L3N3Yy1saW51eC1hcm02NC1nbnVAMTYuMi42IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1SUE92cWxZQmJjUWprejlWUVFEWjJUMmJBUklqWFpWMUtGbHQrVjJNcjZTVy9lNEk5ZmNLc2FBMGhkeWYyRkhvVGxzVjJ4bkJkNVk5MTJyUC8xQ2U2dz09Il0sCgogICAgIkBuZXh0L3N3Yy1saW51eC1hcm02NC1tdXNsIjogWyJAbmV4dC9zd2MtbGludXgtYXJtNjQtbXVzbEAxNi4yLjYiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVVSVVR1MStkTWt4SnNQRmdtK09lRXZxOXdmNXN1ancwRXZnWXk4MFRER0hUU0xUbklIZXFiMEV1OEEzc0M5NUlSZ2plalFMK2tDNG13KzR5UHhpQVhBPT0iXSwKCiAgICAiQG5leHQvc3djLWxpbnV4LXg2NC1nbnUiOiBbIkBuZXh0L3N3Yy1saW51eC14NjQtZ251QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLURPajE4Mm1QVjhHM1VrcmF5TG9SRU01WUVZSStEazV3djdPeDl4bDFmRmliQUVMRXNGRDBsRFBmSEllSUxsdXRNTWZkeWhsellQRUxHM3BldUthdXJ3PT0iXSwKCiAgICAiQG5leHQvc3djLWxpbnV4LXg2NC1tdXNsIjogWyJAbmV4dC9zd2MtbGludXgteDY0LW11c2xAMTYuMi42IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSEtRNVNQL1YvdWI3M1V2RjduL3plSmx4azJrTG10TDdXenJnNFdmbWtqbU5vczVvbkoydEt1N3laT1BkTDE4QTZTdmZuM21heDI5eW0rcnk3TmtLNGc9PSJdLAoKICAgICJAbmV4dC9zd2Mtd2luMzItYXJtNjQtbXN2YyI6IFsiQG5leHQvc3djLXdpbjMyLWFybTY0LW1zdmNAMTYuMi42IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1MWlhwVGxQeVM1djdIaFNtbnZzTEdQM2lJWWdZT0JuYzhyOEFybFQ1NXNHSFY4OWJSMkhsRGRCaldRK1BZNlNKTW1rOFR1VkdGdXhhbG5QM2svMER3Zz09Il0sCgogICAgIkBuZXh0L3N3Yy13aW4zMi14NjQtbXN2YyI6IFsiQG5leHQvc3djLXdpbjMyLXg2NC1tc3ZjQDE2LjIuNiIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLUYwKzRpMGg5SjZDNGVFM0VBUFdzb0NrN1VXL2Riek9qeXp4WTBxbkRVT1lGdTZGRm1kWjZsOTcvWGRWMy9OejNWWXlPN1VXanlFSlVYa0dxY29YZk1BPT0iXSwKCiAgICAiQG94Yy1wcm9qZWN0L3R5cGVzIjogWyJAb3hjLXByb2plY3QvdHlwZXNAMC4xMzAuMCIsICIiLCB7fSwgInNoYTUxMi1pYkQydXN4OUpSdTdmNXB1MnRNS01JNGNwQTROZ1hKUW9ZUlA0cFE3UHhtbjFsNmsvNTNxV3RRV1pheWhZeTNYNFFaa3Q5ME90K21KRWFlWG91aW82UT09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWFuZHJvaWQtYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLWFuZHJvaWQtYXJtNjRAMS4wLjEiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItZkpJM0kwcjNDM09qL3pkQkNwYUNtQlJaWWYwN3hwYXE0eUNmRERvU0ZtK2JlV056YklsMjZwdVc4UnJhVWR1Z29Kdy85NXplck5PbjZqYXNBaHpTbWc9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1kYXJ3aW4tYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLWRhcndpbi1hcm02NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLWNLbkFoV0VzVjdUUGNBLzVFQXRlRHA2S2NKWkJRMkcrQnFFN3pheU1NaTdrTXZ3UnNidjdXVDlhT25uMFdObDRTS0VJZjQzdmpTMzFpVVB1ODBuelhnPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NCI6IFsiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1ZS3JWd1FqSVJCUG8rNUcvdTAzd0dqYmR5NHE3cHl6Q2U5M0RLOVZKN3prVm1lZzhMSjdHYmdzaUhXZFI0eFNvZTRDQVhSRDdCY2pnYnRyNjRia1hOZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWZyZWVic2QteDY0IjogWyJAcm9sbGRvd24vYmluZGluZy1mcmVlYnNkLXg2NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItei9vQnNSRW80NlNzRnFCd1l0RmUwa3BKZUJpakFUNDhPL1dYTEk0c3VpQ0xCa3IwM1JUdFRKTUN6U2REZDJ6bmxoOFZKaXpMMDlYVmtRZ2s4SVpvbnc9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmQDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItaWs4cTdHTTExenh2WXhGYzJQZURjVDZUQnZoQ1FNYVV4ZnBoL001bDlzS3VUcy9TamczTCtCeXcwRjd3MFpWTEJabXgzMFArZ0cwRUN6ek4rTUZjbVE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1nbnUiOiBbIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LWFybTY0LWdudUAxLjAuMSIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItUW9TeDJFa3lycmRaNmtjeUU4c3RxWjYydDBZcmE4RnM1aWE5bE94SnJoNlRNUUpLN2dRS21zY2RUSGY3cE9YS1JFS3JWd090SmNRRzNxVlNmYzg2NkE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsQDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi11d053RnB3S2VOaVphd2ZBV0JnZzBWSXp0UFRWM2loaGgxdlYzMzRoOWl2bk5Mb3J4blFNVTZGejh3RzFaYjRRaDlMQzEvTWtjeVQzWWxEWEczUnNnZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXBwYzY0LWdudSI6IFsiQHJvbGxkb3duL2JpbmRpbmctbGludXgtcHBjNjQtZ251QDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi16WTFidWw3T1dyN0RGQmlKKyt3b2ZYdm5yOEI0NWNlM1FzUVVoS3JJaFhzeWdBaDdiVGt3eWVNMWJpMWEyZzVDL3lDL044VFp5R0RFb01mbS9sOW1wZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXMzOTB4LWdudSI6IFsiQHJvbGxkb3duL2JpbmRpbmctbGludXgtczM5MHgtZ251QDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJzMzkweCIgfSwgInNoYTUxMi0wZnJsc1QvZjRGdDZJN1NNRVNUS25GM2Nac2RpY1FuMWRDTWtGL2pUOXdETEUrZ0dvaVFmdjFubVQ5ZStzN3MvZmVrdnZ5NnRaTTJqSHZJMnRrYkpEUT09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1nbnUiOiBbIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1nbnVAMS4wLjEiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1YQUJWbUdwOVRnMFdzcFRWdndkdVRjNGZwcXk2Sm5BVXJTUWU2T3V5cUQvMDNuSTdyME85T1dVa01Jd0ZyaktBSXFvbHZxb0E0WnJKcHBnd0UwR3htdz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1tdXNsIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC14NjQtbXVzbEAxLjAuMSIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLWJWNGZ6c3d1elZjS0Q5MG8vVk02UXFLeG54bERxMGcyQklTRExOVm14cm5ocHYxRERieVBoQ0lqWWZ2ellMVitNdmtLS25RdDJRNkFPODZTRUJVTFVRPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctb3Blbmhhcm1vbnktYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLW9wZW5oYXJtb255LWFybTY0QDEuMC4xIiwgIiIsIHsgIm9zIjogIm5vbmUiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLS9NaDBaaHEzT1A3ZlZzMGtjUUhaUDZsWkV0aE1HVGFTZjhVQlFZU0ZFWkRXR1hYbEVDK25KNkVxZW5hSzJ0NExCWE1lM0ErSy9HMkJWWFhkdE9yNFBRPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctd2FzbTMyLXdhc2kiOiBbIkByb2xsZG93bi9iaW5kaW5nLXdhc20zMi13YXNpQDEuMC4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvY29yZSI6ICIxLjEwLjAiLCAiQGVtbmFwaS9ydW50aW1lIjogIjEuMTAuMCIsICJAbmFwaS1ycy93YXNtLXJ1bnRpbWUiOiAiXjEuMS40IiB9LCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItKzF4YzlYNDVsOHVmc0JBbTZHanZ4MnFEUklZOWxUVnQwY2dXTmNKKzFnZGhYdmtieGVQQTYweVJUd1NUdVhMMDlDTWh5Sm1qcFY3RTNOb3l4YnFGUVE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjIjogWyJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjQDEuMC4xIiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi0xRCtVcVpkZm51UitKeTFHZ01Kd2k4NWJENDBIMjF1Tm1PUFJXUWh3NG9SU3VvbFovQjVyaXhaNDVESzJLWE9UQ3ZtVkNlY2F1V2dFaGJ3OGJJN3RPdz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLXdpbjMyLXg2NC1tc3ZjIjogWyJAcm9sbGRvd24vYmluZGluZy13aW4zMi14NjQtbXN2Y0AxLjAuMSIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLUlOQXljYVd1aGxPSzN3azRtUkhHc2Rnd1lXbWQ5Y0NoZFBkRTlid1dteTZybjlWcVZOWU5GR2hPZFhyb2ZYVXh3SEluY1NpUE5iOHRObThrbkRWSWVRPT0iXSwKCiAgICAiQHJvbGxkb3duL3BsdWdpbnV0aWxzIjogWyJAcm9sbGRvd24vcGx1Z2ludXRpbHNAMS4wLjEiLCAiIiwge30sICJzaGE1MTItMmo5Ykd0NUpoOGhqK3ZQdGd6UHRsNzJqMHlSeEhBeXVtb282VE5mQWpzTEIwNFV0cFN2UGJQY0RjQk14ejduKzlDWUIwYzFHeFFGeFlSZzJqaW1xR3c9PSJdLAoKICAgICJAc3RhbmRhcmQtc2NoZW1hL3NwZWMiOiBbIkBzdGFuZGFyZC1zY2hlbWEvc3BlY0AxLjEuMCIsICIiLCB7fSwgInNoYTUxMi1sMmFGeTVqQUxobmlHNUhncXJENmpYTGkvclVXckt2cU4vcUp4NnlvSnNnS2hibFZkK2lxcVU0UkNYYXZtL2pQaXR5RG81VEN2S01ucGpLbk9yaXkwdz09Il0sCgogICAgIkBzd2MvaGVscGVycyI6IFsiQHN3Yy9oZWxwZXJzQDAuNS4xNSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi44LjAiIH0gfSwgInNoYTUxMi1KUTVUdU1pNDVPd2k0L0JJTUFKQm9TUW9PSnUxMm9Pay9nQURxbGNVTDlKRWRIQjh2eWpVU3N4cWVOWG5tWEhqWUtNaTJXY1l0ZXpHRUVocVVJL0UyZz09Il0sCgogICAgIkB0YWJieV9haS9oaWpyaS1jb252ZXJ0ZXIiOiBbIkB0YWJieV9haS9oaWpyaS1jb252ZXJ0ZXJAMS4wLjUiLCAiIiwge30sICJzaGE1MTItcjViQ2xLcmNJdXNEb28wNDlkU0w4Q2F3bkhSNm1SZER3aGxRdUlnWlJOdHk2OHEweDhrM0xmMUJ0UEFNeFJmL0dnbkhCbklPNHVqZDMrR1FkTFd6eFE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvbm9kZSI6IFsiQHRhaWx3aW5kY3NzL25vZGVANC4zLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvcmVtYXBwaW5nIjogIl4yLjMuNSIsICJlbmhhbmNlZC1yZXNvbHZlIjogIl41LjIxLjAiLCAiaml0aSI6ICJeMi42LjEiLCAibGlnaHRuaW5nY3NzIjogIjEuMzIuMCIsICJtYWdpYy1zdHJpbmciOiAiXjAuMzAuMjEiLCAic291cmNlLW1hcC1qcyI6ICJeMS4yLjEiLCAidGFpbHdpbmRjc3MiOiAiNC4zLjAiIH0gfSwgInNoYTUxMi1hRmI0Z1VoRk9nZGg5QVhvNEl6QkVPekJra0F4bTlWaWd3REpuTUlZdjNsY2ZYQ0pWZXNOZmJFYUJsNEJOZ1ZSeWlkOTJBbWR2aXF3QlVCUktTZVkzZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZSI6IFsiQHRhaWx3aW5kY3NzL294aWRlQDQuMy4wIiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQHRhaWx3aW5kY3NzL294aWRlLWFuZHJvaWQtYXJtNjQiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtZGFyd2luLXg2NCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtZnJlZWJzZC14NjQiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybS1nbnVlYWJpaGYiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybTY0LWdudSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtbXVzbCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LWdudSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LW11c2wiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLXdhc20zMi13YXNpIjogIjQuMy4wIiwgIkB0YWlsd2luZGNzcy9veGlkZS13aW4zMi1hcm02NC1tc3ZjIjogIjQuMy4wIiwgIkB0YWlsd2luZGNzcy9veGlkZS13aW4zMi14NjQtbXN2YyI6ICI0LjMuMCIgfSB9LCAic2hhNTEyLUY3SFpHQmVOOUkwL0F1dUpTNVB3Y0Q4eGF5eDVyaTVHaGpZVURCRVZZVWtleHlBL2dpd2JETmpSVnJ4U2V6RTNUMjUwT1UySy93cC9sdFd4M1VPZWZnPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWFuZHJvaWQtYXJtNjQiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1hbmRyb2lkLWFybTY0QDQuMy4wIiwgIiIsIHsgIm9zIjogImFuZHJvaWQiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVRKUGlxNjd0S2xMdU9iUDZSa3d2VkdEb3hDTUJWdERnS2tMZmEvdXlqNy9GeXh2UXdIUytVT25WclhYZ2JFc2ZVYU1naVZ2QzRLYkpuUnIyNmhvNE5nPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NCI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NEA0LjMuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLW9NTi9XWlJiK1NPMzdCbVVFbEVnZUVXdVU4RS9IWFJraU9EeEp4TGUxVVRIVlhMcmRWU2dmYUpWN3BTbGhSR01TT2lYTHV4VElqZnNGM3dZdno4Y2dRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi14NjQiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1kYXJ3aW4teDY0QDQuMy4wIiwgIiIsIHsgIm9zIjogImRhcndpbiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLU42Q1VtdTRhNmJLVkFEZnc3N3AraXc2WWQ5UTNPQmhlMHZlYURYK1FhemZ1VllsUXNIZkRneEJyc2pRL0lXK3p5d0w4bVRyTmQwU2RKVC96Z3R2TWRBPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWZyZWVic2QteDY0IjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtZnJlZWJzZC14NjRANC4zLjAiLCAiIiwgeyAib3MiOiAiZnJlZWJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLXpETDVoQmtRZEg1QzZNcHFiSzNnUUFnUDgwdHNNd1NJMjZ2ak96akp0TkNNVW8wbEZnT0l0ekhLQkl1cE9aTlF4dDNvdVBIN1JQaHZOaGlUZkNlNUNRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybS1nbnVlYWJpaGYiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC1hcm0tZ251ZWFiaWhmQDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItUjA2SGROaTdBN09Fb01zZjZkNHRqWjcxUkNXblpRUEhqMm1ub3RTRlVSak5MZEJDK2NJZ1hRN2w4MUNxZW9pUWZ0amY2T09ibHhYTUluTWdOMlZ6TUE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtZ251IjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtZ251QDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1xVEpIRUxYOGpldGpoUlFIQ0xpbGtWTG15YnB6TlFBdGFJL2dhb1ZvaWRuL3VmYk5EYkFvOEtsSzJKK3lQb2M4d1F4dkR4Q21oLzVscjhuQzErbFRiZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC1hcm02NC1tdXNsIjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtbXVzbEA0LjMuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItWjZzdWtpUXNuZ25XTytsMzlYNHBQYmlXVDgxSUMrUExLRitQSHhJbHlaYkdOYjlNT0RmWWxYRVZsRnZlajVCT1pJbldYMDFrVnl6ZUx2SHNYaGZjelE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LWdudSI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LXg2NC1nbnVANC4zLjAiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1EUk5kUVJwU0d6UkdmQVJWdVZreHZNOFExMm5oMTlsNEJGL0c3ekdBMW9lKzl3Y0M2c2FGQkhUSVNycEljS3poaVh0U3JsU3JsdUNmdk11bGVkb0NUUT09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC14NjQtbXVzbCI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LXg2NC1tdXNsQDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItWjBJQURiRG84Ymg2STdoMklRTXg2MDFBZFhCTGZGcEVkVW90ZnQ4NmV2ZC84WlBmbFplOUNPUE84UTF2dytwZkxXSVVvOXpOL0pHWnZ3dUFKcWR1cWc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kiOiBbIkB0YWlsd2luZGNzcy9veGlkZS13YXNtMzItd2FzaUA0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAZW1uYXBpL2NvcmUiOiAiXjEuMTAuMCIsICJAZW1uYXBpL3J1bnRpbWUiOiAiXjEuMTAuMCIsICJAZW1uYXBpL3dhc2ktdGhyZWFkcyI6ICJeMS4yLjEiLCAiQG5hcGktcnMvd2FzbS1ydW50aW1lIjogIl4xLjEuNCIsICJAdHlieXMvd2FzbS11dGlsIjogIl4wLjEwLjEiLCAidHNsaWIiOiAiXjIuOC4xIiB9LCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItSE5aR09VeEVtRWxrc1lSN1M2c0M1alRlTkdwb2JBc3k5dTdHdTBBc2tKOC8yMEZSOUdxZWJVeUIrSEJjVS9heDZCSHVpdUppK09kYTRCK1lYNkgxeUE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2luMzItYXJtNjQtbXN2YyI6IFsiQHRhaWx3aW5kY3NzL294aWRlLXdpbjMyLWFybTY0LW1zdmNANC4zLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVBlK1JQVlRpMVQrcXltdXVScGNkdndTVlpqbmxsL2Y3bjhnQnhNTWgzeExUY3RNREtxcGRmR2ltYk15aW9xdExoVVlaeGRKOXdHTmhWN01LSHZnWnNRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLXdpbjMyLXg2NC1tc3ZjIjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtd2luMzIteDY0LW1zdmNANC4zLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1NdnJmMmtYVy95ZVcvT1RlelpsQ0dPaXJYUmNVdUxJQngvNVkxMkJhUE03d0pvcnlHNmRmUy9OSkw4YUJQcXRURXgvVm00VDR2S3pGVWNLRFQrVEtVQT09Il0sCgogICAgIkB0YWlsd2luZGNzcy9wb3N0Y3NzIjogWyJAdGFpbHdpbmRjc3MvcG9zdGNzc0A0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYWxsb2MvcXVpY2stbHJ1IjogIl41LjIuMCIsICJAdGFpbHdpbmRjc3Mvbm9kZSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUiOiAiNC4zLjAiLCAicG9zdGNzcyI6ICJeOC41LjEwIiwgInRhaWx3aW5kY3NzIjogIjQuMy4wIiB9IH0sICJzaGE1MTItSm0wNVRqeCs5eUNMR3Y1cXcxYys4NFBzZHM4TW55ckVRWUNCK0ZGazJsZ0dpVWpsUnFkeGtlNG1WVHVZcmoyeG5WWnFLaW0yQXByNXlTdVFSWUF3L3c9PSJdLAoKICAgICJAdHlieXMvd2FzbS11dGlsIjogWyJAdHlieXMvd2FzbS11dGlsQDAuMTAuMiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi40LjAiIH0gfSwgInNoYTUxMi1Sb0J2SjJYMHd1S2xXRklqcndmZkd3MUlxWkhLUXF6SWNoS2FhZFpaZm5OcHNBWXAybU0waDM2SnRQQ2pOREFIR2dZZXovMTV1TUJwZkd3Y2hoaU1nZz09Il0sCgogICAgIkB0eXBlcy9jaGFpIjogWyJAdHlwZXMvY2hhaUA1LjIuMyIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAdHlwZXMvZGVlcC1lcWwiOiAiKiIsICJhc3NlcnRpb24tZXJyb3IiOiAiXjIuMC4xIiB9IH0sICJzaGE1MTItTXc1NThvZUE5ZkZidjY1L3k0bUh0WERzOWJQbkZNWkFML2p4ZFBGVXBPSEhJWFg5MW1jZ0VIYlM1TGFocitwd1pGUjhBN0dRbGVSV2VJNmNHRkMyVUE9PSJdLAoKICAgICJAdHlwZXMvZGVlcC1lcWwiOiBbIkB0eXBlcy9kZWVwLWVxbEA0LjAuMiIsICIiLCB7fSwgInNoYTUxMi1jOWg5ZFZWTWlnTVBjNGJ3VHZDNWR4cXRxSlp3UVBlUHNXalBscFNPbm9qYm9yNnBHcWRrNTQxbGZBN0FxRlFyNXBCMUJSZHEwanVZOWRiODFCd3lGdz09Il0sCgogICAgIkB0eXBlcy9lc3RyZWUiOiBbIkB0eXBlcy9lc3RyZWVAMS4wLjkiLCAiIiwge30sICJzaGE1MTItR2hkUGd5MWVsNC9JbVAwNVgwNVV3NGN3Mi9NOTNCQ1VtbkV2V1pOU3RsQ3pFS01FNEZraytZcG9BNU9pSE5RbW9TN0NhZmI4WGEzUHlhOG0xUXJ6ZWc9PSJdLAoKICAgICJAdHlwZXMvbm9kZSI6IFsiQHR5cGVzL25vZGVAMjIuMTkuMTkiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidW5kaWNpLXR5cGVzIjogIn42LjIxLjAiIH0gfSwgInNoYTUxMi1keWgveE8yRmg1YllyZldhYXFHclJRUUdrTmRtWXc2QW1hQVV2WWVVTU5UV1F0dmI3OTZpa0xkbVRjaFJtT2xPaUlKMVREWGZXZ1Z4MVFrVWxRNkhldz09Il0sCgogICAgIkB0eXBlcy9yZWFjdCI6IFsiQHR5cGVzL3JlYWN0QDE5LjIuMTUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiY3NzdHlwZSI6ICJeMy4yLjIiIH0gfSwgInNoYTUxMi1lUndjR05IdmUrRThxdEVRU1NSbDZ1cmgrckZvcDR2OGdtNk84ckd2MjVDb2RidkZkTGpBMXZWUTFLa2lGRTB3MFVQT25iOHREaUZLTDVscDBydFk1UT09Il0sCgogICAgIkB0eXBlcy9yZWFjdC1kb20iOiBbIkB0eXBlcy9yZWFjdC1kb21AMTkuMi4zIiwgIiIsIHsgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJAdHlwZXMvcmVhY3QiOiAiXjE5LjIuMCIgfSB9LCAic2hhNTEyLWpwMkwvZVk2Zm4rS2dWVlFBT3FZSXRiRjBWWS9ZQXBlNU16MkYwYXlrU084Z3gzMWJZQ1p5dlNlWXhDSEt2ekhHNWVaamMrenlhUzVCckJXeWEyK2tRPT0iXSwKCiAgICAiQHZpdGVzdC9leHBlY3QiOiBbIkB2aXRlc3QvZXhwZWN0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBzdGFuZGFyZC1zY2hlbWEvc3BlYyI6ICJeMS4xLjAiLCAiQHR5cGVzL2NoYWkiOiAiXjUuMi4yIiwgIkB2aXRlc3Qvc3B5IjogIjQuMS42IiwgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAiY2hhaSI6ICJeNi4yLjIiLCAidGlueXJhaW5ib3ciOiAiXjMuMS4wIiB9IH0sICJzaGE1MTItN0VIRHF1UHRoQUxTVjBqaGhqZ0VXOEZYYXZpTXg3clNxdThXNm9xQ29BdU9oS292ODE0UDk5UURWMXB4TUEzUVB2MjFZdWR2Sm5nSWhqck5JNG9wTGc9PSJdLAoKICAgICJAdml0ZXN0L21vY2tlciI6IFsiQHZpdGVzdC9tb2NrZXJANC4xLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHZpdGVzdC9zcHkiOiAiNC4xLjYiLCAiZXN0cmVlLXdhbGtlciI6ICJeMy4wLjMiLCAibWFnaWMtc3RyaW5nIjogIl4wLjMwLjIxIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIm1zdyI6ICJeMi40LjkiLCAidml0ZSI6ICJeNi4wLjAgfHwgXjcuMC4wIHx8IF44LjAuMCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIm1zdyIsICJ2aXRlIl0gfSwgInNoYTUxMi1NQ0ZjNjNjek1qRUluT2xjWTJjcFFDdkNOK0tnYkFuKzYweHU5Y01nUDRzS2FMQzVKTkFLdzdKSDhRZEFub0FDODhoVzFJaVNOWitHZ1ZYbE4xVWNNUT09Il0sCgogICAgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6IFsiQHZpdGVzdC9wcmV0dHktZm9ybWF0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRpbnlyYWluYm93IjogIl4zLjEuMCIgfSB9LCAic2hhNTEyLWg1U3hEL0l6TmhaWW5yU1pSc1VaUUlDK3ZEMEdZOGNVdnEwaXdzbWtGS2l4UkNLTExXcUNYYS9GSVE0UzFSK3NJK1BHb29qa0hzZE5yYlppTTlRcGd3PT0iXSwKCiAgICAiQHZpdGVzdC9ydW5uZXIiOiBbIkB2aXRlc3QvcnVubmVyQDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAicGF0aGUiOiAiXjIuMC4zIiB9IH0sICJzaGE1MTItbk9QQ21uMit5RDBaTm1LZHNYR3YvVXhNTVdiTXVLZUQ2R3lZbmNOd2RrWUR4cFF2clBTS1lqMnJXdURqQzJZNGI2dzZoamlwNWRCS0Z6RVV1WmUzdkE9PSJdLAoKICAgICJAdml0ZXN0L3NuYXBzaG90IjogWyJAdml0ZXN0L3NuYXBzaG90QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6ICI0LjEuNiIsICJAdml0ZXN0L3V0aWxzIjogIjQuMS42IiwgIm1hZ2ljLXN0cmluZyI6ICJeMC4zMC4yMSIsICJwYXRoZSI6ICJeMi4wLjMiIH0gfSwgInNoYTUxMi1ZaHNkRTZ4QVZmVERtemp4TDJaRFV2amorWnNneU9LZStUZFF6cWtENzJ3SU9tSGthOE51R1E2TnBUTlp2OUQyWjYzZmJ3V0tKUGVWcEV3NEVRZ1l4dz09Il0sCgogICAgIkB2aXRlc3Qvc3B5IjogWyJAdml0ZXN0L3NweUA0LjEuNiIsICIiLCB7fSwgInNoYTUxMi1KRkt4TXg2dWRod0toL0xkbzI3MGUxN1FYNzEwdmd1bk1rdVBBdlhqSFN2QzZvcUxXQUhoVmhqZy9JNzFxMHUwQ0JTRXJJT0RWMUtqdjBGUU5TV2pkZz09Il0sCgogICAgIkB2aXRlc3QvdXRpbHMiOiBbIkB2aXRlc3QvdXRpbHNANC4xLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHZpdGVzdC9wcmV0dHktZm9ybWF0IjogIjQuMS42IiwgImNvbnZlcnQtc291cmNlLW1hcCI6ICJeMi4wLjAiLCAidGlueXJhaW5ib3ciOiAiXjMuMS4wIiB9IH0sICJzaGE1MTItRnhJWStVODFSM0xHS0N4YUhIRlJRNStnNi9pUmdHTG1lSFdkcDJBbWo0bGpRUnJFSVdIbVp5RGZEWUJSWmxweXFBN3FLeHRTOUREMWRoazhSblJJVlE9PSJdLAoKICAgICJhY29ybiI6IFsiYWNvcm5AOC4xNi4wIiwgIiIsIHsgImJpbiI6IHsgImFjb3JuIjogImJpbi9hY29ybiIgfSB9LCAic2hhNTEyLVVWSnlFOU10dE9zQlFJREt3MXNrYjluQXdRdVI1d3VHRDMrODJLNkpnSmxtL1krS0k5Mm9Oc01OR1pDWWREc1Z0UkhTYWswcGNWNURubzUrNGpoOXN3PT0iXSwKCiAgICAiYW5zaS1yZWdleCI6IFsiYW5zaS1yZWdleEA1LjAuMSIsICIiLCB7fSwgInNoYTUxMi1xdUpRWGxUU1VHTDJMSDlTVVhvOFZ3c1k0c29hbmhnbzZMTlNtODRFMUxCY0U4czNPMHdwZGlSenlSOXovWlpKTWxNV3YzN3FPT2I5cGRKbE1VRUtGUT09Il0sCgogICAgImFuc2ktc3R5bGVzIjogWyJhbnNpLXN0eWxlc0A0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjb2xvci1jb252ZXJ0IjogIl4yLjAuMSIgfSB9LCAic2hhNTEyLXpiQjlyQ0pBVDFyYmppVkRiMmhxS0ZITllMeGd0azhOVVJ4WjNJWndEM0Y2TnR4YlhaUUNublNpMUxreCtJRG9oZFBsRnAyMjJ3VkFMSWhlWkpRU0VnPT0iXSwKCiAgICAiYXNzZXJ0aW9uLWVycm9yIjogWyJhc3NlcnRpb24tZXJyb3JAMi4wLjEiLCAiIiwge30sICJzaGE1MTItSXppOFJRY2ZmcUNlTlZnRmlnS2xpMXNza2xJYnBIbkNZYzZBa25YR1lvQjZnckpxeWVieTdqdjEySlVRZ21UQW5JRG5iY2sxdXhrc1Q0ZHpOM1BXQkE9PSJdLAoKICAgICJiYXNlbGluZS1icm93c2VyLW1hcHBpbmciOiBbImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZ0AyLjEwLjMxIiwgIiIsIHsgImJpbiI6IHsgImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZyI6ICJkaXN0L2NsaS5janMiIH0gfSwgInNoYTUxMi1NdWpZTzNlUDcydXZtU0UwaTR3bHRzb2RSZklwWkFUUDNqdnpSTlJHR3hneklkN2FWb2NWSkpWM25mMDFxbnp6S0ZHeFFWQzlicFd4bDVjanhUci83UT09Il0sCgogICAgImJ1ZmZlci1mcm9tIjogWyJidWZmZXItZnJvbUAxLjEuMiIsICIiLCB7fSwgInNoYTUxMi1FK1hRQ1J3U2JhYWlDaHR2Nms2RHdnYytieCtCczZ2dUtKSEhsNWtveC9CYUtiaGlYenFRT3dLNGNPMjJ5RWxHcDJPQ21qd1ZoVDNIbXhneVBHbkpmUT09Il0sCgogICAgImNhbml1c2UtbGl0ZSI6IFsiY2FuaXVzZS1saXRlQDEuMC4zMDAwMTc5MyIsICIiLCB7fSwgInNoYTUxMi1pd1NzWVdhQ09vaDI2Y1Y4TndOUlZpSGxyZlV2WXNIRGZSVmNidG13MEtnNlBKSVpaWHdNa2oxNDQyRllMQkdrZVVmMWp1QXNVM0RUZnhXNTc5bXJQQT09Il0sCgogICAgImNoYWkiOiBbImNoYWlANi4yLjIiLCAiIiwge30sICJzaGE1MTItTlVQUmx1T2ZPaVRLQkt2V1B0U0Q0UGhGdldDcU9pMEJHU3ROV3M1N1g5anM3WEdUcHJTbUZvejVGMHRXaFI0V1BqTmVSOWpYcWRDNy9VcFNKVG5sUmc9PSJdLAoKICAgICJjaGFsayI6IFsiY2hhbGtANC4xLjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiYW5zaS1zdHlsZXMiOiAiXjQuMS4wIiwgInN1cHBvcnRzLWNvbG9yIjogIl43LjEuMCIgfSB9LCAic2hhNTEyLW9LbmJoRnlSSVhwVXVlejhpQk1teUVhNG5iajRJT1F5dWhjL3d5OWtZNy9XVlBjd0lPOVZBNjY4UHU4UmtPNyswRzc2U0xST2V5dzlDcFEwNjFpNG1BPT0iXSwKCiAgICAiY2xpZW50LW9ubHkiOiBbImNsaWVudC1vbmx5QDAuMC4xIiwgIiIsIHt9LCAic2hhNTEyLUlWM091MGpTTXpacmQzcFo0OG5Ma1Q5REE3QWcxcG5QemFpUWhwVzdjM1JiY3FxenZ6elZ1K0w4Z2ZxTXAvOElNMk1RdFNpcWFDeHJyY2Z1OEk4ck1BPT0iXSwKCiAgICAiY2xpdWkiOiBbImNsaXVpQDguMC4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInN0cmluZy13aWR0aCI6ICJeNC4yLjAiLCAic3RyaXAtYW5zaSI6ICJeNi4wLjEiLCAid3JhcC1hbnNpIjogIl43LjAuMCIgfSB9LCAic2hhNTEyLUJTZU5ueXVzNzVDNC8vTlE5Z1F0MS9jc1RYeW8vOFNiK2FmTEFrekFwdEZ1TXNvZDlIRm9rR051ZFpwaS9vUVY3M2huVksrc1IrNVBWUk1kK0RyN1lRPT0iXSwKCiAgICAiY2xzeCI6IFsiY2xzeEAyLjEuMSIsICIiLCB7fSwgInNoYTUxMi1lWW0wUVdCdFVyQldaV0cwZDM4Nk9HQXcxNlo5OTVQaU9WbzJCN2JqV1NiSGVkR2w1ZTBaV2FxNjVrT0dnVVNOZXNFSURrQjlJU2JUZy9KSzlkaENaQT09Il0sCgogICAgImNvbG9yLWNvbnZlcnQiOiBbImNvbG9yLWNvbnZlcnRAMi4wLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiY29sb3ItbmFtZSI6ICJ+MS4xLjQiIH0gfSwgInNoYTUxMi1SUkVDUHNqN2l1L3hiNW9LWWNzRkhTcHBGTm5zai81Mk9WVFJLYjR6UDVvblh3VkYzelZtbVRvTmNPZkdDK0NSRHBmSy9VNTg0Zk1nMzhaSENhRWxLUT09Il0sCgogICAgImNvbG9yLW5hbWUiOiBbImNvbG9yLW5hbWVAMS4xLjQiLCAiIiwge30sICJzaGE1MTItZE95KzNBdVczYTJ3TmJaSEl1TVpwVGNnakd1TFUvdUJML3ViY1pGOU9YYkRvOGZmNE84eVZwNUJmMGVmUzh1RW9ZbzVxNEZ4N2RZOU9nUUdYZ0FzUUE9PSJdLAoKICAgICJjb21tYW5kZXIiOiBbImNvbW1hbmRlckAyLjIwLjMiLCAiIiwge30sICJzaGE1MTItR3BWa21NOHZGMnZRVWtqMkx2Wm1EMzVKeGVKT0xDd0o5Y1VrdWd5azJudWhidjMrbUp2cExZWXQrMCtVU014RStvaitleS9sSkVuaFp3NzV4L09NY1E9PSJdLAoKICAgICJjb25jdXJyZW50bHkiOiBbImNvbmN1cnJlbnRseUA5LjIuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjaGFsayI6ICI0LjEuMiIsICJyeGpzIjogIjcuOC4yIiwgInNoZWxsLXF1b3RlIjogIjEuOC4zIiwgInN1cHBvcnRzLWNvbG9yIjogIjguMS4xIiwgInRyZWUta2lsbCI6ICIxLjIuMiIsICJ5YXJncyI6ICIxNy43LjIiIH0sICJiaW4iOiB7ICJjb25jIjogImRpc3QvYmluL2NvbmN1cnJlbnRseS5qcyIsICJjb25jdXJyZW50bHkiOiAiZGlzdC9iaW4vY29uY3VycmVudGx5LmpzIiB9IH0sICJzaGE1MTItZnNmck8wTXhWNjRabm95OC9sMXZWSWpqSGEyOVNaeXlxUGdRQndoaURjYVc4d0pjMlczWFdWT0d4NE0zb0pCbnYvemRVWklJcDFnRGVTOThHelA4Tmc9PSJdLAoKICAgICJjb252ZXJ0LXNvdXJjZS1tYXAiOiBbImNvbnZlcnQtc291cmNlLW1hcEAyLjAuMCIsICIiLCB7fSwgInNoYTUxMi1LdnA0NTlIclYyRkVKMUNBc2kxS3UrTVkza2FzSDE5VEZ5a1R6MnhXbU1lcTZiazJOVTNYWHZmSitRNjFtMHhrdFd3dCsxSFNZZjNKWnNUbXMzYVJKZz09Il0sCgogICAgImNzc3R5cGUiOiBbImNzc3R5cGVAMy4yLjMiLCAiIiwge30sICJzaGE1MTItejFIR0tjWXkyeEE4QUdRZndybjBQQXkrUEI3WC9HU2ozVVZKVzlxS3luNDN4V2ErZ2w1blhtVTRxcUxNUnpXVkxGQzhLdXNVWDhULzBrQ2lPWXBBSVE9PSJdLAoKICAgICJkYXRlLWZucyI6IFsiZGF0ZS1mbnNANC4yLjEiLCAiIiwge30sICJzaGE1MTItMzdSaFNkeGFHMXN1ZW42VkRDemE2ck5yUWZvb3lRaDU3SEZWUHdRR0VxMlFXbGlWTHpQUVo4T2EwMTd3ZU91K0haQ256STdOM1BmL3d5b0JLZkVxckE9PSJdLAoKICAgICJkYXRlLWZucy1qYWxhbGkiOiBbImRhdGUtZm5zLWphbGFsaUA0LjEuMC0wIiwgIiIsIHt9LCAic2hhNTEyLWhUSVAveit0K3FLd0JEY21tc25taldUZHV4Q2crNUtmZHFXUXZiMlgvOEM5K2tuWVk2ZXBOL3BmeGREdXlWbFNWZUZ6MHNNNWVFZndJVVE3MFU0Y2tnPT0iXSwKCiAgICAiZGV0ZWN0LWxpYmMiOiBbImRldGVjdC1saWJjQDIuMS4yIiwgIiIsIHt9LCAic2hhNTEyLUJ0ajJCT09PODNvM1d5SDU5ZThNZ1hzeEVRVmNhcmtVT3BFWXJ1YkIwdXJ3bk4xMHlRMzY0cnNpQnlVMTFuWmxxV1labTA1aS9vZjdpbzRtemloQnRRPT0iXSwKCiAgICAiZW1vamktcmVnZXgiOiBbImVtb2ppLXJlZ2V4QDguMC4wIiwgIiIsIHt9LCAic2hhNTEyLU1Tall6Y1dOT0EwZXdBSHB6ME14cFlGdndnNnlqeTFORzN4dGVvcXo2NDRWQ28vUlBnbnIxL0dHdCtpYzNpSlR6UThFdTNUZE0xNFNhd25WVW1HRTZBPT0iXSwKCiAgICAiZW5oYW5jZWQtcmVzb2x2ZSI6IFsiZW5oYW5jZWQtcmVzb2x2ZUA1LjIxLjUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZ3JhY2VmdWwtZnMiOiAiXjQuMi40IiwgInRhcGFibGUiOiAiXjIuMy4zIiB9IH0sICJzaGE1MTItbUxDTmJyUWxpMTFLMXlTVW11TnQ0WlVCM09wR0lEcTRxMnZUQlRmNWNMMmxwc1JqSTlRS3FTRDBuZGpXOEZ5dmNXL0pqNDZnTWU5c3l5SEFzdk1hL0E9PSJdLAoKICAgICJlcy1tb2R1bGUtbGV4ZXIiOiBbImVzLW1vZHVsZS1sZXhlckAyLjEuMCIsICIiLCB7fSwgInNoYTUxMi1uMjd6VFlNall1MWFqNE1qQ1d6U1A3RzlyNzV1dHNhb2M4bTYxd2VLK1c4Sk1CR0dReWJkNDNHc3RDWFozV05tU0Z0R1Q5d2k1OXFRVFc2bWhUUjVMUT09Il0sCgogICAgImVzYnVpbGQiOiBbImVzYnVpbGRAMC4yNS40IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGVzYnVpbGQvYWl4LXBwYzY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9hbmRyb2lkLWFybSI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvYW5kcm9pZC1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvYW5kcm9pZC14NjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2Rhcndpbi1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZGFyd2luLXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZnJlZWJzZC1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZnJlZWJzZC14NjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWFybSI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtYXJtNjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWlhMzIiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWxvb25nNjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LW1pcHM2NGVsIjogIjAuMjUuNCIsICJAZXNidWlsZC9saW51eC1wcGM2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtcmlzY3Y2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtczM5MHgiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbmV0YnNkLWFybTY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9uZXRic2QteDY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9vcGVuYnNkLWFybTY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9vcGVuYnNkLXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvc3Vub3MteDY0IjogIjAuMjUuNCIsICJAZXNidWlsZC93aW4zMi1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvd2luMzItaWEzMiI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvd2luMzIteDY0IjogIjAuMjUuNCIgfSwgImJpbiI6IHsgImVzYnVpbGQiOiAiYmluL2VzYnVpbGQiIH0gfSwgInNoYTUxMi04cGdqTFVjVWpjZ0RnKzJRNE5ZWG5QYm8vdm5jQVk0VW15YUNtMGpaZXZFUnFDSFpJYVd3ZEpIa2Y4WFF0dTRBeFNLQ2R2clViVDBYVXIxSWRaekk4UT09Il0sCgogICAgImVzY2FsYWRlIjogWyJlc2NhbGFkZUAzLjIuMCIsICIiLCB7fSwgInNoYTUxMi1XVWoycWx4YVF0TzRnNlBxNWMyOUdUY1dHRHlkOGl0TDh6VGxpcGdFQ3ozSmVzQWlpT0tvdGQ4SlU2b3RCM1BBQ2dHNnhrSlV5Vmhib01TK2JqZS9qQT09Il0sCgogICAgImVzdHJlZS13YWxrZXIiOiBbImVzdHJlZS13YWxrZXJAMy4wLjMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL2VzdHJlZSI6ICJeMS4wLjAiIH0gfSwgInNoYTUxMi03UlVLZlhnU01Na3p0Nlp1WG1xYXBPdXJMR1BQZmdqNmw5dVJaN2xSR29sdmsweTJ5b2NjMzVMZGN4S0M1UFFaZG4yRE1xaW9BUTJOb1djclRLbW02Zz09Il0sCgogICAgImV4cGVjdC10eXBlIjogWyJleHBlY3QtdHlwZUAxLjMuMCIsICIiLCB7fSwgInNoYTUxMi1rbnZ5ZWF1WWhxak9ZdlE2Nk16blNNczgzd21IckN5Y05FTjZBbysyQWVZRWZ4VUlrdWlWeGRFYTFxbEdFUEsrV2UzbjBUSGlEY2lZU3NDY2dXL0RvQT09Il0sCgogICAgImZkaXIiOiBbImZkaXJANi41LjAiLCAiIiwgeyAicGVlckRlcGVuZGVuY2llcyI6IHsgInBpY29tYXRjaCI6ICJeMyB8fCBeNCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbInBpY29tYXRjaCJdIH0sICJzaGE1MTItdEliWXRaYnVjT3MwQlJHcVBKa3NoSlVZZEwrU0RIN2RWTThnankrRVJwM1dBVWpMRUZKRSswMmthbnlIdHdqV09ud3JLWUJpd0FtTTBwNGtMSkFuWGc9PSJdLAoKICAgICJmc2V2ZW50cyI6IFsiZnNldmVudHNAMi4zLjMiLCAiIiwgeyAib3MiOiAiZGFyd2luIiB9LCAic2hhNTEyLTV4b0RmWCtmTDdmYUFUbmFnbVdQcGJGdHdoL1I3N1dtTU1xcUhHUzY1QzN2dkIwWUhyZ0YrQjFZbVozNDQxdE1qNW42M2swMjEyWE5vSnd6bGhmZlF3PT0iXSwKCiAgICAiZ2V0LWNhbGxlci1maWxlIjogWyJnZXQtY2FsbGVyLWZpbGVAMi4wLjUiLCAiIiwge30sICJzaGE1MTItRHlGUDNCTS8zWUhUUU9DVUwvdzBPWkhSMGxwS2VHcnhvdGNIV2NxTkVkbmx0cUZ3WFZmaEVCUTk0ZUlvMzRBZlFwbzByR2tpNGN5SWlmdFkwNmgyRmc9PSJdLAoKICAgICJncmFjZWZ1bC1mcyI6IFsiZ3JhY2VmdWwtZnNANC4yLjExIiwgIiIsIHt9LCAic2hhNTEyLVJiSjUvam1GY05OQ2NEVjVvOWVUbkJMSi9Ic3pXVjBQNzNiYytGZjRuUy9ySmorWWFTNklHeWlPTDBWb0JZWCtsMVdybDNrNjNoL0tySCtuaEowWHZRPT0iXSwKCiAgICAiaGFzLWZsYWciOiBbImhhcy1mbGFnQDQuMC4wIiwgIiIsIHt9LCAic2hhNTEyLUV5a0pUL1ExS2pUV2N0cHBnSUFnZlNPMHRLVnVaVWpoZ01yMTdrcVR1bU1sNkFmdjNFSVNsZVU3cVpVem9YREZUQUhUREM0Tk9vRy9aeFUzRXZsTVBRPT0iXSwKCiAgICAiaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQiOiBbImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50QDMuMC4wIiwgIiIsIHt9LCAic2hhNTEyLXp5bW01K3Urc0NzU1d5RDlxTmFlalYzREZ2aENLY2xLZGl6WWFKVXVIQTgzUkxqYjduU3VHbmRkQ0hHdjBoaytLWTdCTUFsc1dlSzRVZWc2RVY2WFFnPT0iXSwKCiAgICAiaml0aSI6IFsiaml0aUAyLjcuMCIsICIiLCB7ICJiaW4iOiB7ICJqaXRpIjogImxpYi9qaXRpLWNsaS5tanMiIH0gfSwgInNoYTUxMi1BQy83Sm9mSnZaR3JybmVXTmFFbkplT0xVeCtKbEd0N3ROYTB3WmlSUFQ0TVkxd21mS2p0Mis2TzJwMnV6Mitza2xsOE9aWm1KTU5xZWtlN2tLYk5nUT09Il0sCgogICAgImxpYnBob25lbnVtYmVyLWpzIjogWyJsaWJwaG9uZW51bWJlci1qc0AxLjEyLjQxIiwgIiIsIHt9LCAic2hhNTEyLWxzbU1tR1hCeFhJSy9WTUxFajBrTDZNdFVzMWtCR2oxblRDemk2emdRb0cxREV3cXd0MkRReUh4Y0x5a2NlSXhBbmZFM2h5YTdOdUloNlBwQzZTM2ZBPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzIjogWyJsaWdodG5pbmdjc3NAMS4zMi4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImRldGVjdC1saWJjIjogIl4yLjAuMyIgfSwgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAibGlnaHRuaW5nY3NzLWFuZHJvaWQtYXJtNjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1kYXJ3aW4tYXJtNjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1kYXJ3aW4teDY0IjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtZnJlZWJzZC14NjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1saW51eC1hcm0tZ251ZWFiaWhmIjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251IjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtbXVzbCI6ICIxLjMyLjAiLCAibGlnaHRuaW5nY3NzLWxpbnV4LXg2NC1nbnUiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtbXVzbCI6ICIxLjMyLjAiLCAibGlnaHRuaW5nY3NzLXdpbjMyLWFybTY0LW1zdmMiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy13aW4zMi14NjQtbXN2YyI6ICIxLjMyLjAiIH0gfSwgInNoYTUxMi1OWFlCemluTnJibGZyYVBHeXJiUG9EMTlDMWg5bGZJLzFtemdXWXZYVVRlNDE0R3ovWDFGRDJYQlpTWk03clJUck1BOEpMM090QWFHaWZySUtoUTV5UT09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1hbmRyb2lkLWFybTY0IjogWyJsaWdodG5pbmdjc3MtYW5kcm9pZC1hcm02NEAxLjMyLjAiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItWUs3L0NsVHQ0a0FLMHZvNnczWCtQbm0wRDJjZjJ2UEhiaE9YZG9OdGkxR2EwYWwxUDRUQlpod2pBVHZqTndMRUJDbkt2akpjMmpRZ0hYSDBORXdsQWc9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtZGFyd2luLWFybTY0IjogWyJsaWdodG5pbmdjc3MtZGFyd2luLWFybTY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVJ6ZUc5SnU1YmFnMkJ2MS9sd2xWSnZCRTNxNlR0WHNrZFpMTEN5Zmc1cHQrSEx6OUJxbElDTzdMWk03VkhOVFRuLzVQUmhIRkJTams1bGM0Y21zY1BRPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzLWRhcndpbi14NjQiOiBbImxpZ2h0bmluZ2Nzcy1kYXJ3aW4teDY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1VK1FzQnAybS9zMndxcFVZVC82d25sYWdkWmJ0WmRuZFNtdXQvTkpxbENjTUxUV3A1bXVDcklEK0s1VUo2anFEMkJGc2hlakNZWG5pUERiTmg3M1Y4dz09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1mcmVlYnNkLXg2NCI6IFsibGlnaHRuaW5nY3NzLWZyZWVic2QteDY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSkNUaWdlZEVrc1prM3RIVFR0aG5NZFZmR2Y2MUZreThKaTJFNFlqVVRFUVgxNHhpeS9sVHpYbnUxdndpWmUzYlllMHErU3BzU0gvQ1RlRFhLNldIaWc9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtLWdudWVhYmloZiI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LWFybS1nbnVlYWJpaGZAMS4zMi4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTIteDZybm5wUmEyR0wwelFPa3Q2cnRzM1lEUHpkdUxwV3Z3QUY2RU1oWEZWWlhENHRQckJrRUZxekdvd3pDc0lXc1BqcVNLK3R5TkVPRFVCWGVlVkhTa3c9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251IjogWyJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItMG5uTXlveU9MUkpYZmJNT2lsYVNSY0xIM0p3NXo5SEROR2ZUL2d3Q1BnYURqbngwaTh3N3ZCekZMRlIxZjZDTUxLRjhnVmJlYm1rVU4zZmEva1FKcFE9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtbXVzbCI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LWFybTY0LW11c2xAMS4zMi4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1VcFFrb2VucjRVSkV6Z1ZJWXBJODBsREZ2Um1QVmc2b3Fib05IZm9INENRSWZOQStIT3JaN01vN0taUDAyZEM2TGpnaFBRSmVCc3ZYaEpvZC93bklCZz09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtZ251IjogWyJsaWdodG5pbmdjc3MtbGludXgteDY0LWdudUAxLjMyLjAiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1WN1FyNTJJaFptZEtQVnIrVnR3OG8rV0xzUUpZQ1RkOGxvSWZwRGFNUldHVVpmQk9ZRUpleUpJa3FHSURNWlB3UHgyNHBVTWZ3U3h4SThwaHIvTWJPQT09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtbXVzbCI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LXg2NC1tdXNsQDEuMzIuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLWJZY0xwK1ZiMGF3c2lYZy84MHVDUmV6Q1lITmcxL2wzbXQwZ3pIbldWOVhQMVc1c0thNS9UQ2RHV2FSL3pCTTJQZUYvSGJzUXYvajJVUk5PaVZ1eFdnPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzLXdpbjMyLWFybTY0LW1zdmMiOiBbImxpZ2h0bmluZ2Nzcy13aW4zMi1hcm02NC1tc3ZjQDEuMzIuMCIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItOFNiQzhCUjQwcFM2YmFDTThzYnRZRFN3RVZRZDRKbEZUT2xhRDNnV0dIZlRoVGNBQm5OREJkYTZlVFplcWJvZmFsSUpoRngwcUt6Z0hKbWNQVG5HZHc9PSJdLAoKICAgICJsaWdodG5pbmdjc3Mtd2luMzIteDY0LW1zdmMiOiBbImxpZ2h0bmluZ2Nzcy13aW4zMi14NjQtbXN2Y0AxLjMyLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1BbXE5Qi9Tb1pZZERpMWtGcm9qbm9xUEx4WWhRNFdvNVhpTDhFVkpyVnNCOEFSb0MxUFdXNlZHdFQwV0tDZW1qeThhQytsb3VKbmpTN1UxOHgzYjA2UT09Il0sCgogICAgIm1hZ2ljLXN0cmluZyI6IFsibWFnaWMtc3RyaW5nQDAuMzAuMjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjIjogIl4xLjUuNSIgfSB9LCAic2hhNTEyLXZkMkY0WVV5RVhLR2NMSG9xK1RFeUNqeHVlU2VIbkZ4eXlqTnA4MHlnMFhWNHZVaG5EZXIvbHZ2bHFNL2FyQjViWFFONUsyLzNvaW55Q1J5eDhUMkNRPT0iXSwKCiAgICAibmFub2lkIjogWyJuYW5vaWRAMy4zLjEyIiwgIiIsIHsgImJpbiI6IHsgIm5hbm9pZCI6ICJiaW4vbmFub2lkLmNqcyIgfSB9LCAic2hhNTEyLVpCOVJILzM5cXBxNVZ1NlkrTm1VYUZoUVI2cHArTTJYdDc2WEJuRXdEYUdjVkFxaGx2eHJsM0IyYktTNUQzTkgzUVI3NnYzYVNyS2FGL0tpeTdsRXRRPT0iXSwKCiAgICAibmV4dCI6IFsibmV4dEAxNi4yLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQG5leHQvZW52IjogIjE2LjIuNiIsICJAc3djL2hlbHBlcnMiOiAiMC41LjE1IiwgImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZyI6ICJeMi45LjE5IiwgImNhbml1c2UtbGl0ZSI6ICJeMS4wLjMwMDAxNTc5IiwgInBvc3Rjc3MiOiAiOC40LjMxIiwgInN0eWxlZC1qc3giOiAiNS4xLjYiIH0sICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBuZXh0L3N3Yy1kYXJ3aW4tYXJtNjQiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy1kYXJ3aW4teDY0IjogIjE2LjIuNiIsICJAbmV4dC9zd2MtbGludXgtYXJtNjQtZ251IjogIjE2LjIuNiIsICJAbmV4dC9zd2MtbGludXgtYXJtNjQtbXVzbCI6ICIxNi4yLjYiLCAiQG5leHQvc3djLWxpbnV4LXg2NC1nbnUiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy1saW51eC14NjQtbXVzbCI6ICIxNi4yLjYiLCAiQG5leHQvc3djLXdpbjMyLWFybTY0LW1zdmMiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy13aW4zMi14NjQtbXN2YyI6ICIxNi4yLjYiLCAic2hhcnAiOiAiXjAuMzQuNSIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJAb3BlbnRlbGVtZXRyeS9hcGkiOiAiXjEuMS4wIiwgIkBwbGF5d3JpZ2h0L3Rlc3QiOiAiXjEuNTEuMSIsICJiYWJlbC1wbHVnaW4tcmVhY3QtY29tcGlsZXIiOiAiKiIsICJyZWFjdCI6ICJeMTguMi4wIHx8IDE5LjAuMC1yYy1kZTY4ZDJmNC0yMDI0MTIwNCB8fCBeMTkuMC4wIiwgInJlYWN0LWRvbSI6ICJeMTguMi4wIHx8IDE5LjAuMC1yYy1kZTY4ZDJmNC0yMDI0MTIwNCB8fCBeMTkuMC4wIiwgInNhc3MiOiAiXjEuMy4wIiB9LCAib3B0aW9uYWxQZWVycyI6IFsiQG9wZW50ZWxlbWV0cnkvYXBpIiwgIkBwbGF5d3JpZ2h0L3Rlc3QiLCAiYmFiZWwtcGx1Z2luLXJlYWN0LWNvbXBpbGVyIiwgInNhc3MiXSwgImJpbiI6IHsgIm5leHQiOiAiZGlzdC9iaW4vbmV4dCIgfSB9LCAic2hhNTEyLXFPVmdLSmcxK0F0MTVOcGVVUCtlSmdDSHZUQ2dYc29nd2VxODdSaS9JeDdQa3FRSGc0c2RhWG1TRnFLbGdhSVhFNGtXMGcyNUxFNjhXODdVQU5sSHR3PT0iXSwKCiAgICAib2J1ZyI6IFsib2J1Z0AyLjEuMSIsICIiLCB7fSwgInNoYTUxMi11VHFGOU11UHJhQVErSXNuUGYzNjZSRzRjUDlSdFVpN01MTzFOM0tFYyt3YjBhNnlLcGVMMGxtazJJQjFqWTVLSFBBbFRjNlQvSlJkQy9ZcXhITndrUT09Il0sCgogICAgInBhdGhlIjogWyJwYXRoZUAyLjAuMyIsICIiLCB7fSwgInNoYTUxMi1XVWpHY0FxUDFnUWFjb1FlK09CSnNGQTdMZDREeVh1VUlqWjVjYzc1Y0xIdko3ZHROc1R1Z3BoeElBRHdzcFMrQXJhQVVlUENLclNWdFBMRmovRjg4dz09Il0sCgogICAgInBpY29jb2xvcnMiOiBbInBpY29jb2xvcnNAMS4xLjEiLCAiIiwge30sICJzaGE1MTIteGNlSDJzbmh0YjVNOWxpcURzbUV3NTZsZTM3Nm1UWmtFWC9qRWIvUnhORnllZ051bDdlTnNsQ1hQOUZEai9MY3UwWDhLRXlNY2VQMm50cGFIckRFVkE9PSJdLAoKICAgICJwaWNvbWF0Y2giOiBbInBpY29tYXRjaEA0LjAuNCIsICIiLCB7fSwgInNoYTUxMi1RUDg4QkFLdk1hbS8zTnhINnZqMm8yMVI2TWp4WlVBZDZubHdBUy9wbkd2TjlJVkxvY0xIeEdZSXpGaGc2ZlVRKzV0aDZQNGR2NGVXOWpYM0RTSWo3QT09Il0sCgogICAgInBvc3Rjc3MiOiBbInBvc3Rjc3NAOC41LjE1IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIm5hbm9pZCI6ICJeMy4zLjEyIiwgInBpY29jb2xvcnMiOiAiXjEuMS4xIiwgInNvdXJjZS1tYXAtanMiOiAiXjEuMi4xIiB9IH0sICJzaGE1MTItRmZSOHNqZDRlbTJUNmZiM0kyTXdBSlU3SFdWTXI5emJhK2VubVFlZVdGZkNibStVT0MvMFg0RFM4WHRwVVRNd1dNR2JqS1lQN3hqZk5la3p5R21CM0E9PSJdLAoKICAgICJyZWFjdCI6IFsicmVhY3RAMTkuMi42IiwgIiIsIHt9LCAic2hhNTEyLXNmV0dHZmF2aTB4cjhQZzBzVnN5SE1BT3ppVllLZ1BMTnJTN2lnK2l2TU5iM3diQ0J3M0t4dGZsc0dCQXdEM2dZUWxFL0FFWnNUTGdUb1JyU0NqYjBRPT0iXSwKCiAgICAicmVhY3QtZGF5LXBpY2tlciI6IFsicmVhY3QtZGF5LXBpY2tlckA5LjE0LjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGRhdGUtZm5zL3R6IjogIl4xLjQuMSIsICJAdGFiYnlfYWkvaGlqcmktY29udmVydGVyIjogIjEuMC41IiwgImRhdGUtZm5zIjogIl40LjEuMCIsICJkYXRlLWZucy1qYWxhbGkiOiAiNC4xLjAtMCIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJyZWFjdCI6ICI+PTE2LjguMCIgfSB9LCAic2hhNTEyLXRCYW9EV2pQd2UwTTVwR3J1bTRIMFNSNkx5aytCTzlvSG5wOUpiS3BHS1cybWxyYU5QZ1A5Qk1mc2c1cFdwd3Jzc0FSbWVxazdZQmwyb1h1dFpUYUhBPT0iXSwKCiAgICAicmVhY3QtZG9tIjogWyJyZWFjdC1kb21AMTkuMi42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInNjaGVkdWxlciI6ICJeMC4yNy4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgInJlYWN0IjogIl4xOS4yLjYiIH0gfSwgInNoYTUxMi0wcHJNSStodkJiUGpzV254REx4bENHeU04UE42VXVXakVVQ1ltWmhPNjd4SVY5WGFzYS9yL3ZEbnErWHlxNExvMjdnOFFTYk81WXpBUnUwRDFTcHMzZz09Il0sCgogICAgInJlcXVpcmUtZGlyZWN0b3J5IjogWyJyZXF1aXJlLWRpcmVjdG9yeUAyLjEuMSIsICIiLCB7fSwgInNoYTUxMi1mR3hFSTcrd3NHOXhydmRqc3JsbUwyMk9NVFRpSFJ3QU1yb2lFZU1ncThnem9MQy9QUXI3UnNSRFNUTFVnL2JaQVp0RitUVklrSGM2LzRSSUtydWkrUT09Il0sCgogICAgInJlc2VsZWN0IjogWyJyZXNlbGVjdEA1LjIuMCIsICIiLCB7fSwgInNoYTUxMi1BZ1ozVU9abTNZbmRmcko0T1lqZ3JUN2JtQ20vMWlxa2p2RWZIL29ZanpoNlBEMnF3NFF1VDNqam5YSXJwZHQ0TVRwTVhjbE1UM2xYYm1SWStYUmFrdz09Il0sCgogICAgInJvbGxkb3duIjogWyJyb2xsZG93bkAxLjAuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAb3hjLXByb2plY3QvdHlwZXMiOiAiPTAuMTMwLjAiLCAiQHJvbGxkb3duL3BsdWdpbnV0aWxzIjogIl4xLjAuMCIgfSwgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQHJvbGxkb3duL2JpbmRpbmctYW5kcm9pZC1hcm02NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1kYXJ3aW4tYXJtNjQiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1mcmVlYnNkLXg2NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmIjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LWFybTY0LWdudSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsIjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXBwYzY0LWdudSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1zMzkweC1nbnUiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctbGludXgteDY0LWdudSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC14NjQtbXVzbCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1vcGVuaGFybW9ueS1hcm02NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy13YXNtMzItd2FzaSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjIjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLXdpbjMyLXg2NC1tc3ZjIjogIjEuMC4xIiB9LCAiYmluIjogeyAicm9sbGRvd24iOiAiYmluL2NsaS5tanMiIH0gfSwgInNoYTUxMi1YMEtRSGxqTm5Fa1dOcXFpejl6SnJHdW5oMUIwSGdPeExYdm5GcENPY2FkemN5NXFvaFozdHFNRVVnMDB2bmNvUm92WHVLM1pxQ1Q5S25uS3pvSW5GUT09Il0sCgogICAgInJ4anMiOiBbInJ4anNANy44LjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuMS4wIiB9IH0sICJzaGE1MTItZGhLZjkwM1UvUFFaWTZib05OdEFHZFdiRzg1V0FialQvMXhZb1pJQzdGQVkweVdhcE9CUVZzVnJEbDU4Vzg2Ly9lMVZwTU5CdFJWNE1hWGZkTXlTRkE9PSJdLAoKICAgICJzY2hlZHVsZXIiOiBbInNjaGVkdWxlckAwLjI3LjAiLCAiIiwge30sICJzaGE1MTItZU52K1dyVmJLdTFmM3ZiWUpUL3h0aUY1c3lBNUhQSU10ZjlJZ1kvbktnMHNXcXpBVUV2cVkveG03T2NaYy9xYWZMeC9pTzlGZ09tZVNBcDR2NXRpL1E9PSJdLAoKICAgICJzZW12ZXIiOiBbInNlbXZlckA3LjguMCIsICIiLCB7ICJiaW4iOiB7ICJzZW12ZXIiOiAiYmluL3NlbXZlci5qcyIgfSB9LCAic2hhNTEyLUFjTTdkVi81dWw0RWVrb1EyOUFnbTV2cmk4Sk5xUnlqMzlvMHFwWDZ2REYyR1pydHV0Wmw1UndnRDFYblpqaVRBZm5jc0poTUk0OFFRSDNzTjg3WU5BPT0iXSwKCiAgICAic2hhcnAiOiBbInNoYXJwQDAuMzQuNSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAaW1nL2NvbG91ciI6ICJeMS4wLjAiLCAiZGV0ZWN0LWxpYmMiOiAiXjIuMS4yIiwgInNlbXZlciI6ICJeNy43LjMiIH0sICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtZGFyd2luLWFybTY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLWRhcndpbi14NjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWRhcndpbi14NjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybSI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgtYXJtNjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1yaXNjdjY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1zMzkweCI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgteDY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4bXVzbC14NjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saW51eC1hcm0iOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgtYXJtNjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgtcHBjNjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgtcmlzY3Y2NCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC1saW51eC1zMzkweCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC1saW51eC14NjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXhtdXNsLWFybTY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLWxpbnV4bXVzbC14NjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtd2FzbTMyIjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLXdpbjMyLWFybTY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLXdpbjMyLWlhMzIiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtd2luMzIteDY0IjogIjAuMzQuNSIgfSB9LCAic2hhNTEyLU91OUk1RnQ5V05jQ2JYclU5Y01nUEJjQ0s4TGl3THFjYnl3VzN0NG9EVjM3bjFwenB1TkxzWWlBVjhlT0RuamJ0UWxTRHdaMmNVRWVRejRFNTRIbHRnPT0iXSwKCiAgICAic2hlbGwtcXVvdGUiOiBbInNoZWxsLXF1b3RlQDEuOC4zIiwgIiIsIHt9LCAic2hhNTEyLU9ibW5JRjRoWE5nMUJxaG5IbWdiREVURjhkTFBDZ2daV0Jqa1FmaFpwYnN6Wm5ZdXI1RFVsalRjQ0hpaTVMQzNKNUUweWVPLzFMSU15SCtVdkhRZ3l3PT0iXSwKCiAgICAic2lnaW5mbyI6IFsic2lnaW5mb0AyLjAuMCIsICIiLCB7fSwgInNoYTUxMi15YngwV08xLzhiU0JMRVdYWnZFZDdnTVczU24zSkZsVzNUdlgxblJFYkRMUk5RTmFlTk44V0swbWVCd1BkQWFPSTdUdFJSUkpuL0VzMXpocnJDSHU3Zz09Il0sCgogICAgInNvdXJjZS1tYXAiOiBbInNvdXJjZS1tYXBAMC42LjEiLCAiIiwge30sICJzaGE1MTItVWpnYXB1bVdsYk1oa0JnelQ3WWtjNVlYVVQ0NkYwaUt1OFNHWHEwYmN3UDVkei9oMFBsajZlbkpxanoxWmJxMmw1V2FxWW5yVmJ3V09XTXlGM0Y0N2c9PSJdLAoKICAgICJzb3VyY2UtbWFwLWpzIjogWyJzb3VyY2UtbWFwLWpzQDEuMi4xIiwgIiIsIHt9LCAic2hhNTEyLVVYV01LaExPd1ZLYjcyOElVdFFQWHhmWVUrdXNkeWJ0VXJLLzh1R0U4Q1FNdnJoT3B3dnpEQndqMFFoU0w3TVFjN3ZJc0lTQkc4VlE4K0lEUXhwZlFBPT0iXSwKCiAgICAic291cmNlLW1hcC1zdXBwb3J0IjogWyJzb3VyY2UtbWFwLXN1cHBvcnRAMC41LjIxIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImJ1ZmZlci1mcm9tIjogIl4xLjAuMCIsICJzb3VyY2UtbWFwIjogIl4wLjYuMCIgfSB9LCAic2hhNTEyLXVCSFUzTDNjenNJeVlYS1g4OGZkckdvdnhkU0NvVEdEUlo2U1lYdFNSeExaVXpIZzVQLzY2SHQ2dW9VbEh1OUVab2QraW5YaEtvM3FRZ3dYVVQveTF3PT0iXSwKCiAgICAic3RhY2tiYWNrIjogWyJzdGFja2JhY2tAMC4wLjIiLCAiIiwge30sICJzaGE1MTItMVhNSkU1ZlFvMWpHSDZZLzdlYm53UE9CRWtJRW5UNFFGMzJkNVIxK1ZYZFh2ZU0wSUJNSnQ4emZheFgxUDNRaFZ3clllKzU3Nitqa0FOdFNTMm1CYnc9PSJdLAoKICAgICJzdGQtZW52IjogWyJzdGQtZW52QDQuMS4wIiwgIiIsIHt9LCAic2hhNTEyLVJxN3liY1gyUnVDNTVyOW9hUFZFVzcveHUzdGo4dTRHZUJZSEJXQ3ljaEZ0ek1Jcjg2QTdlM1BQRUJQVDM3c0hTdEtYMytUaVgvRnIvQUNtSkxWbExRPT0iXSwKCiAgICAic3RyaW5nLXdpZHRoIjogWyJzdHJpbmctd2lkdGhANC4yLjMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZW1vamktcmVnZXgiOiAiXjguMC4wIiwgImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50IjogIl4zLjAuMCIsICJzdHJpcC1hbnNpIjogIl42LjAuMSIgfSB9LCAic2hhNTEyLXdLeVFSUXBqSjBzSXA2MkVyU1pkR3NqTUpXc2FwNW9STmloSGh1Nkc3SlZPLzlqSUI2VXlldkwrdFh1T3Fybmc4ai9jeEtUV3lXVXd2U1RyaWlaei9nPT0iXSwKCiAgICAic3RyaXAtYW5zaSI6IFsic3RyaXAtYW5zaUA2LjAuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJhbnNpLXJlZ2V4IjogIl41LjAuMSIgfSB9LCAic2hhNTEyLVkzOFZQU0hjcWtGckNwRm5ROXZ1U1htcXV1djVvWE9LcEdlVDZhR3JyM28zR2M5QWxWYTZKQmZVU09DbmJ4R0daRisvMG9vSTdLclB1VVN6dFVkVTVBPT0iXSwKCiAgICAic3R5bGVkLWpzeCI6IFsic3R5bGVkLWpzeEA1LjEuNiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjbGllbnQtb25seSI6ICIwLjAuMSIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJyZWFjdCI6ICI+PSAxNi44LjAgfHwgMTcueC54IHx8IF4xOC4wLjAtMCB8fCBeMTkuMC4wLTAiIH0gfSwgInNoYTUxMi1xU1Z5RFRlTW90ZHZRWW9IV0xOR3dSRkpIQytpK1p2ZEJSWW9zT0ZnQytXZzF2eDRmck4yL1JHL05BN1NZcXF2S05MZjM5UDJMU1JBMnB1Nm4wWFlaQT09Il0sCgogICAgInN1cHBvcnRzLWNvbG9yIjogWyJzdXBwb3J0cy1jb2xvckA4LjEuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJoYXMtZmxhZyI6ICJeNC4wLjAiIH0gfSwgInNoYTUxMi1NcFVFTjJPb2R0VXp4dktRbDcyY1VGN1JRNUVpSHNHdlNzVkcwaWE5YzVSYldHTDJDSTRDN0VwUFM4VVRCSXBsbmx6WmlOdVY1NncrRnVOeHkzdHkyUT09Il0sCgogICAgInRhaWx3aW5kLW1lcmdlIjogWyJ0YWlsd2luZC1tZXJnZUAzLjYuMCIsICIiLCB7fSwgInNoYTUxMi11eEw3cUFWUXJpcVJRUEF5SzNwajY2VnFza1dxb1ozN1BXOTRqd09Ud05mcS96OW95dTFWK2VxclpxdFIyK2ZDaVhkWU9aZS9Nb2R0OEd0dnFOenUrdz09Il0sCgogICAgInRhaWx3aW5kY3NzIjogWyJ0YWlsd2luZGNzc0A0LjMuMCIsICIiLCB7fSwgInNoYTUxMi15Nm54TUdCMW5NVzlSNms5NmU1Z2RJRnpjZkwvZ1RKUk5hcUdlczFZdmtMblBWWHpXZ2JxRkYyeUxDMFQ4Rzc3NG4yNGN4M1BlOFhyS29uaUNPQUgrUT09Il0sCgogICAgInRhcGFibGUiOiBbInRhcGFibGVAMi4zLjMiLCAiIiwge30sICJzaGE1MTItdXhjL3pwcUZnNng3Qzh2T0U3bGg2TGJkYThlRUw5em1WbS9QTGVUUEJSaGgxeENnZFdhUStKMUNVaWVHcElmbTJIZHRzVXBSditIc2hpYXNCTWNjNkE9PSJdLAoKICAgICJ0ZXJzZXIiOiBbInRlcnNlckA1LjE2LjkiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlLW1hcCI6ICJeMC4zLjIiLCAiYWNvcm4iOiAiXjguNS4wIiwgImNvbW1hbmRlciI6ICJeMi4yMC4wIiwgInNvdXJjZS1tYXAtc3VwcG9ydCI6ICJ+MC41LjIwIiB9LCAiYmluIjogeyAidGVyc2VyIjogImJpbi90ZXJzZXIiIH0gfSwgInNoYTUxMi1IUGEvRmRUQjlYR0kySDEva2VMRlpIeGw2V052QUk0WWFsSEd0RFFUbE1uSmNvcVNhYjFVd0w0bDFoR0VoczYvR21MSEJaSWcvWWdCKytqY2J6b09FZz09Il0sCgogICAgInRpbnliZW5jaCI6IFsidGlueWJlbmNoQDIuOS4wIiwgIiIsIHt9LCAic2hhNTEyLTArRFV2cVdNVmFsTG1oYTZscjRrRDhpQU1LMUh6VjAvYUtuQ3RXYjl2OTY0MVRuUC9NRmI3UGMyYnhveFFqVFhBRXJyeVhWZ1VPZnYyWXFObGxxR2VnPT0iXSwKCiAgICAidGlueWV4ZWMiOiBbInRpbnlleGVjQDEuMS4yIiwgIiIsIHt9LCAic2hhNTEyLWRBcVNxRS9SYWJwQktJOCtoMjZHZkxxNlZiM0pWWHMzMFhZUWpkTWphai9jMnRTOElZWU1iSXpQNTk5S3RSajdjNTcvd1lBcGIzUWpnUmdYbXJDdWtBPT0iXSwKCiAgICAidGlueWdsb2JieSI6IFsidGlueWdsb2JieUAwLjIuMTYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZmRpciI6ICJeNi41LjAiLCAicGljb21hdGNoIjogIl40LjAuNCIgfSB9LCAic2hhNTEyLXBuOTlWaG9BQ1lSOG5GSGh4cWl4K3V2c2JYaW5lQWFzV201b2pYb044eEV3SzVLZDMvVHJoTm4xd0J5dUQ1MlV4V1JMeThwdStrUk1uaUVpNkVxOVpnPT0iXSwKCiAgICAidGlueXJhaW5ib3ciOiBbInRpbnlyYWluYm93QDMuMS4wIiwgIiIsIHt9LCAic2hhNTEyLUJmK0lMbUJncmV0VXJkSnh6WE0wU2dYTFozWGZpYVV1T2ovSUtRSHVUWGlwKzA1WG4rdXlFWWRWZzBrWURpcFRCY0xyQ1Z5VXpBUHo3UW1BcmIwbW13PT0iXSwKCiAgICAidHJlZS1raWxsIjogWyJ0cmVlLWtpbGxAMS4yLjIiLCAiIiwgeyAiYmluIjogeyAidHJlZS1raWxsIjogImNsaS5qcyIgfSB9LCAic2hhNTEyLUwwT3JwaThxR3BSRy8vTmQrSDkwdkZCKzNpSG51ZTF6U1NHbU5PT0NoMUdMSjdyVUtWd1YySHZpanBoR1FTMlVtaFVaZXdTOVZndnhZSWRncitmRzFBPT0iXSwKCiAgICAidHNsaWIiOiBbInRzbGliQDIuOC4xIiwgIiIsIHt9LCAic2hhNTEyLW9KRnU5NEhRYitLVmR1U1VRTDd3bnBtcW5mbUxzT0EvbkFoNmI2RUgwd0NFb0swL21QZVhVNmMzd0tEVjgzTWtPdUhQUkh0U1hLS1U5OUlCYXpTLzJ3PT0iXSwKCiAgICAidHlwZXNjcmlwdCI6IFsidHlwZXNjcmlwdEA1LjkuMyIsICIiLCB7ICJiaW4iOiB7ICJ0c2MiOiAiYmluL3RzYyIsICJ0c3NlcnZlciI6ICJiaW4vdHNzZXJ2ZXIiIH0gfSwgInNoYTUxMi1qbDF2WnpQRGluTHI5ZVV0M0ovdDdWNkZnTkV3OVFqdkJQZHlzejlLZlFERDQxZlFyQzJZNHZLUWRpYVVwRlQ0YlhsYjFSSGhMcHA4d3RtNk01VGdTdz09Il0sCgogICAgInVuZGljaS10eXBlcyI6IFsidW5kaWNpLXR5cGVzQDYuMjEuMCIsICIiLCB7fSwgInNoYTUxMi1pd0RacWcwUUFHcmc5UmF2NUg0bjBNNjRjM21rUjU5Y0o2d1FwKzdDNG5JMGdzbUV4YWVkYVlMTk80NGVUNEF0QkJ3amJUaUdQTWx0Mk1kMFQ5SDlKUT09Il0sCgogICAgInVzZS1zeW5jLWV4dGVybmFsLXN0b3JlIjogWyJ1c2Utc3luYy1leHRlcm5hbC1zdG9yZUAxLjYuMCIsICIiLCB7ICJwZWVyRGVwZW5kZW5jaWVzIjogeyAicmVhY3QiOiAiXjE2LjguMCB8fCBeMTcuMC4wIHx8IF4xOC4wLjAgfHwgXjE5LjAuMCIgfSB9LCAic2hhNTEyLVBwNkdTd0dQL05yUElyeFZGQUlrT1FleXc4bEZlbk9IaWpRV2tVVHJEdnJGNEFMcXlsUDJDL0tDa2VTOWRwVU0zS3ZZUlFobmE1dnQ3SUw5NStaUTl3PT0iXSwKCiAgICAidml0ZSI6IFsidml0ZUA4LjAuMTMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAibGlnaHRuaW5nY3NzIjogIl4xLjMyLjAiLCAicGljb21hdGNoIjogIl40LjAuNCIsICJwb3N0Y3NzIjogIl44LjUuMTQiLCAicm9sbGRvd24iOiAiMS4wLjEiLCAidGlueWdsb2JieSI6ICJeMC4yLjE2IiB9LCAib3B0aW9uYWxEZXBlbmRlbmNpZXMiOiB7ICJmc2V2ZW50cyI6ICJ+Mi4zLjMiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL25vZGUiOiAiXjIwLjE5LjAgfHwgPj0yMi4xMi4wIiwgIkB2aXRlanMvZGV2dG9vbHMiOiAiXjAuMS4xOCIsICJlc2J1aWxkIjogIl4wLjI3LjAgfHwgXjAuMjguMCIsICJqaXRpIjogIj49MS4yMS4wIiwgImxlc3MiOiAiXjQuMC4wIiwgInNhc3MiOiAiXjEuNzAuMCIsICJzYXNzLWVtYmVkZGVkIjogIl4xLjcwLjAiLCAic3R5bHVzIjogIj49MC41NC44IiwgInN1Z2Fyc3MiOiAiXjUuMC4wIiwgInRlcnNlciI6ICJeNS4xNi4wIiwgInRzeCI6ICJeNC44LjEiLCAieWFtbCI6ICJeMi40LjIiIH0sICJvcHRpb25hbFBlZXJzIjogWyJAdHlwZXMvbm9kZSIsICJAdml0ZWpzL2RldnRvb2xzIiwgImVzYnVpbGQiLCAiaml0aSIsICJsZXNzIiwgInNhc3MiLCAic2Fzcy1lbWJlZGRlZCIsICJzdHlsdXMiLCAic3VnYXJzcyIsICJ0ZXJzZXIiLCAidHN4IiwgInlhbWwiXSwgImJpbiI6IHsgInZpdGUiOiAiYmluL3ZpdGUuanMiIH0gfSwgInNoYTUxMi1NRnRqQllnem1TeG1nQTRSQWZqSXlYV3BHZTFvQUxuamdVVHp6VjdRTHgvVEt4Q3pqdE1INkZkOS9lVksrNUZnMXFOb3o1VkF3c21Ncy9Ob2ZybUp2dz09Il0sCgogICAgInZpdGVzdCI6IFsidml0ZXN0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvZXhwZWN0IjogIjQuMS42IiwgIkB2aXRlc3QvbW9ja2VyIjogIjQuMS42IiwgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6ICI0LjEuNiIsICJAdml0ZXN0L3J1bm5lciI6ICI0LjEuNiIsICJAdml0ZXN0L3NuYXBzaG90IjogIjQuMS42IiwgIkB2aXRlc3Qvc3B5IjogIjQuMS42IiwgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAiZXMtbW9kdWxlLWxleGVyIjogIl4yLjAuMCIsICJleHBlY3QtdHlwZSI6ICJeMS4zLjAiLCAibWFnaWMtc3RyaW5nIjogIl4wLjMwLjIxIiwgIm9idWciOiAiXjIuMS4xIiwgInBhdGhlIjogIl4yLjAuMyIsICJwaWNvbWF0Y2giOiAiXjQuMC4zIiwgInN0ZC1lbnYiOiAiXjQuMC4wLXJjLjEiLCAidGlueWJlbmNoIjogIl4yLjkuMCIsICJ0aW55ZXhlYyI6ICJeMS4wLjIiLCAidGlueWdsb2JieSI6ICJeMC4yLjE1IiwgInRpbnlyYWluYm93IjogIl4zLjEuMCIsICJ2aXRlIjogIl42LjAuMCB8fCBeNy4wLjAgfHwgXjguMC4wIiwgIndoeS1pcy1ub2RlLXJ1bm5pbmciOiAiXjIuMy4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBlZGdlLXJ1bnRpbWUvdm0iOiAiKiIsICJAb3BlbnRlbGVtZXRyeS9hcGkiOiAiXjEuOS4wIiwgIkB0eXBlcy9ub2RlIjogIl4yMC4wLjAgfHwgXjIyLjAuMCB8fCA+PTI0LjAuMCIsICJAdml0ZXN0L2Jyb3dzZXItcGxheXdyaWdodCI6ICI0LjEuNiIsICJAdml0ZXN0L2Jyb3dzZXItcHJldmlldyI6ICI0LjEuNiIsICJAdml0ZXN0L2Jyb3dzZXItd2ViZHJpdmVyaW8iOiAiNC4xLjYiLCAiQHZpdGVzdC9jb3ZlcmFnZS1pc3RhbmJ1bCI6ICI0LjEuNiIsICJAdml0ZXN0L2NvdmVyYWdlLXY4IjogIjQuMS42IiwgIkB2aXRlc3QvdWkiOiAiNC4xLjYiLCAiaGFwcHktZG9tIjogIioiLCAianNkb20iOiAiKiIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkBlZGdlLXJ1bnRpbWUvdm0iLCAiQG9wZW50ZWxlbWV0cnkvYXBpIiwgIkB0eXBlcy9ub2RlIiwgIkB2aXRlc3QvYnJvd3Nlci1wbGF5d3JpZ2h0IiwgIkB2aXRlc3QvYnJvd3Nlci1wcmV2aWV3IiwgIkB2aXRlc3QvYnJvd3Nlci13ZWJkcml2ZXJpbyIsICJAdml0ZXN0L2NvdmVyYWdlLWlzdGFuYnVsIiwgIkB2aXRlc3QvY292ZXJhZ2UtdjgiLCAiQHZpdGVzdC91aSIsICJoYXBweS1kb20iLCAianNkb20iXSwgImJpbiI6IHsgInZpdGVzdCI6ICJ2aXRlc3QubWpzIiB9IH0sICJzaGE1MTItNmx2amJTM3A5YjRDcmRDbWd1emJoMi80dW9YaEdFMnE3MVI0T1g1c3FGOVIxYm85WGQ2ZkdyTUFmdnA1d25DemxCbkZWZENPcDZvbnVUUVZibzhpVVE9PSJdLAoKICAgICJ3aHktaXMtbm9kZS1ydW5uaW5nIjogWyJ3aHktaXMtbm9kZS1ydW5uaW5nQDIuMy4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInNpZ2luZm8iOiAiXjIuMC4wIiwgInN0YWNrYmFjayI6ICIwLjAuMiIgfSwgImJpbiI6IHsgIndoeS1pcy1ub2RlLXJ1bm5pbmciOiAiY2xpLmpzIiB9IH0sICJzaGE1MTItaFVybWFXQmRWRGN4dllxbnloMDl6dW5LelJPV2piWlRpTnk4ZEJFamtTN2VoRURRaWJYSjdYdmxtdGJ3dVRjbFVpSXlOK0N5WFFENFZta284Zk5tOHc9PSJdLAoKICAgICJ3cmFwLWFuc2kiOiBbIndyYXAtYW5zaUA3LjAuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJhbnNpLXN0eWxlcyI6ICJeNC4wLjAiLCAic3RyaW5nLXdpZHRoIjogIl40LjEuMCIsICJzdHJpcC1hbnNpIjogIl42LjAuMCIgfSB9LCAic2hhNTEyLVlWR0lqMmthbUxTVHh3Nk5zWmpvQnhmU3dzbjB5Y2Rlc21jNHArUTIxYzV6UHVaMXBsK05meFZkeFB0ZEh2bU5WT1E2WFNZRzRBVXR5dC9GaTdEMTZRPT0iXSwKCiAgICAieTE4biI6IFsieTE4bkA1LjAuOCIsICIiLCB7fSwgInNoYTUxMi0wcGZGemVnZURXSkhKSUFtVExSUDJEd0hqZEY1czdqbzl0dXp0ZFF4QWhJTkNkdlMrM25HSU5xUGQwMEFwaHFKUi8wTGhBTlVTNi8rN1NDYjk4WU9mQT09Il0sCgogICAgInlhbWwiOiBbInlhbWxAMi45LjAiLCAiIiwgeyAiYmluIjogeyAieWFtbCI6ICJiaW4ubWpzIiB9IH0sICJzaGE1MTItMkF2aE5YM21iOHpkNlp5N0lOVHRTcGwxRjE1SFc2V25xajBzcldsa0tMY3BZbC9nTUlNSml5dUdxMktlSTJZRnhVUGpkbEIrM0xjMTBzZU1MdEw0Y0E9PSJdLAoKICAgICJ5YXJncyI6IFsieWFyZ3NAMTcuNy4yIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImNsaXVpIjogIl44LjAuMSIsICJlc2NhbGFkZSI6ICJeMy4xLjEiLCAiZ2V0LWNhbGxlci1maWxlIjogIl4yLjAuNSIsICJyZXF1aXJlLWRpcmVjdG9yeSI6ICJeMi4xLjEiLCAic3RyaW5nLXdpZHRoIjogIl40LjIuMyIsICJ5MThuIjogIl41LjAuNSIsICJ5YXJncy1wYXJzZXIiOiAiXjIxLjEuMSIgfSB9LCAic2hhNTEyLTdkU3p6UlErK0NLbk5JL2tyS25ZUlY3SktLUFVYTUVoNjFzb2FIS2c5bXJXRWh6RldoRm54UHhHbCs2OWNEMU91NjNDMTNOVVBDbm1JY3J2cUN1TTZ3PT0iXSwKCiAgICAieWFyZ3MtcGFyc2VyIjogWyJ5YXJncy1wYXJzZXJAMjEuMS4xIiwgIiIsIHt9LCAic2hhNTEyLXRWcHNKVzdEZGplY0FpRnBiSUIxZTNxeElRc0U2Tm9QYzUvZVRkcmJiSUM0aDBMVnNXaG5vYTNnK20ySGNsQkl1akh6c3haNFZKVkErR1V1YzIvTEJ3PT0iXSwKCiAgICAiem9kIjogWyJ6b2RANC40LjMiLCAiIiwge30sICJzaGE1MTIteXRFTkZqSUpGbDJVd1lnbGRlMmpjaFcySHdtNEdKRkxEaVNYV2RUckpRQklOOUZjeXA3bjREaHhKRWlXTkFKTVYxL0JxV2ZXL2trZzcxVURjSEp5VFE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQGVtbmFwaS9jb3JlIjogWyJAZW1uYXBpL2NvcmVAMS4xMC4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvd2FzaS10aHJlYWRzIjogIjEuMi4xIiwgInRzbGliIjogIl4yLjQuMCIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTIteXE2T2tKNHA4MkNBZlBsMHU5bVFlYlFIS1BKa1k3V3JJdWsyMDVjVFluWWUrazJaOFlCaDExRnJiUkcvSDZpaGlycWNhY09nbDJCSU84b3lNUUxlWHc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQGVtbmFwaS9ydW50aW1lIjogWyJAZW1uYXBpL3J1bnRpbWVAMS4xMC4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRzbGliIjogIl4yLjQuMCIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItZXd2WWxrODZ4VW9HSTB6UVJOcS9tQysxNlIxUWVEbEtReTIxS2kzb1NZWE5nTGI0NUdWMVA2QTBNKy9zNm55Q3VORHFlNVZwYVk4NEJ6WEd3VmJ3RkE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQGVtbmFwaS93YXNpLXRocmVhZHMiOiBbIkBlbW5hcGkvd2FzaS10aHJlYWRzQDEuMi4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRzbGliIjogIl4yLjQuMCIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItdVRJSTdPWUYrL01lcy9NcmNJT1lwNXlPdFNNTEJXU0lvTFBwY2d3aXBvaUtibGk2azMyMnRjb0ZzeG9JSXhQRHFXMDFTUUdBZ2tvNEV6WmkyQk52Mnc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQG5hcGktcnMvd2FzbS1ydW50aW1lIjogWyJAbmFwaS1ycy93YXNtLXJ1bnRpbWVAMS4xLjQiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHR5YnlzL3dhc20tdXRpbCI6ICJeMC4xMC4xIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvY29yZSI6ICJeMS43LjEiLCAiQGVtbmFwaS9ydW50aW1lIjogIl4xLjcuMSIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItM05RTk5nQTFZU2xKYi9rTUgxaWxkQVNQOUhXNy83a1luUkkyc3pXSmFvZmFTMWhXbWJHSTRIK2QzKzIyYUd6WFhOOUlKK24rR2lGVmNHaXBKUDE4b3c9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQHR5YnlzL3dhc20tdXRpbCI6IFsiQHR5YnlzL3dhc20tdXRpbEAwLjEwLjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9LCAiYnVuZGxlZCI6IHRydWUgfSwgInNoYTUxMi1Sb0J2SjJYMHd1S2xXRklqcndmZkd3MUlxWkhLUXF6SWNoS2FhZFpaZm5OcHNBWXAybU0waDM2SnRQQ2pOREFIR2dZZXovMTV1TUJwZkd3Y2hoaU1nZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS13YXNtMzItd2FzaS90c2xpYiI6IFsidHNsaWJAMi44LjEiLCAiIiwgeyAiYnVuZGxlZCI6IHRydWUgfSwgInNoYTUxMi1vSkZ1OTRIUWIrS1ZkdVNVUUw3d25wbXFuZm1Mc09BL25BaDZiNkVIMHdDRW9LMC9tUGVYVTZjM3dLRFY4M01rT3VIUFJIdFNYS0tVOTlJQmF6Uy8ydz09Il0sCgogICAgImNoYWxrL3N1cHBvcnRzLWNvbG9yIjogWyJzdXBwb3J0cy1jb2xvckA3LjIuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJoYXMtZmxhZyI6ICJeNC4wLjAiIH0gfSwgInNoYTUxMi1xcENBdlJsOXN0dU9IdmVLc243SG5jSlJ2djUwMXFJYWNLelFsTy8rTHd4YzkrMHEyd0x5djREZnZ0ODAvRFBuMnBxT0JzSmREaW9nWEdSOStPdndSdz09Il0sCgogICAgIm5leHQvcG9zdGNzcyI6IFsicG9zdGNzc0A4LjQuMzEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAibmFub2lkIjogIl4zLjMuNiIsICJwaWNvY29sb3JzIjogIl4xLjAuMCIsICJzb3VyY2UtbWFwLWpzIjogIl4xLjAuMiIgfSB9LCAic2hhNTEyLVBTMDhJYm9pYTltdHMvMnlnVjNlTHBZNWdoblVjZkxWL0VYVE9XMUUycVl4SktHR0JVdE5qTjc2RllIbk1zMzZSbUFSbjQxYkMwQVptbityUjBPVnBRPT0iXSwKICB9Cn0K" }, { "path": "metadata.json", "kind": "text", "content": '{\n "id": "grocery",\n "name": "Grocery",\n "tagline": "High-SKU grocery storefront with quick-add cart UX and delivery windows.",\n "industry": "retail",\n "tags": ["food", "grocery", "delivery"],\n "stability": "stable",\n "schemaType": "GroceryStore",\n "mock": {\n "seedName": "grocery",\n "seedBusinessId": "bus_freshmart"\n }\n}\n' }, { "path": "next.config.ts", "kind": "text", "content": 'import type { NextConfig } from "next";\n\n// Same-origin proxy target for the storefront API. The public key\n// decides: a real `cpk_live_\u2026` / `cpk_test_\u2026` only resolves against\n// hosted Cimplify, so browser cart writes go to the same place the\n// server catalogue reads come from. Anything else (`mock-dev`, empty)\n// falls back to the local `cimplify dev` mock in dev.\nconst publicKey = process.env.NEXT_PUBLIC_CIMPLIFY_PUBLIC_KEY?.trim() ?? "";\nconst keyTargetsHostedCimplify =\n publicKey.startsWith("cpk_live_") || publicKey.startsWith("cpk_test_");\nconst STOREFRONT_URL =\n process.env.NODE_ENV === "production" || keyTargetsHostedCimplify\n ? "https://storefronts.cimplify.io"\n : "http://127.0.0.1:8787";\n\nif (STOREFRONT_URL === "http://127.0.0.1:8787") {\n console.warn(\n "[cimplify] next.config resolved the local storefront API URL; production deploys must run with NODE_ENV=production.",\n );\n}\n\n// Cache Components (\'use cache\' + cacheTag/cacheLife) require Node-specific\n// setTimeout atomicity and serialize a postponed state that routinely exceeds\n// CF Workers\' 128MB zlib limit. We\'re on Cloudflare Workers via opennext, so\n// we stay on Next 16\'s "Previous Model" \u2014 `fetch.next.{revalidate,tags}` via\n// the SDK\'s `cacheOptions`, plus `export const revalidate` per page. See\n// https://nextjs.org/docs/app/guides/caching-without-cache-components.\nconst nextConfig: NextConfig = {\n async redirects() {\n return [\n { source: "/login", destination: "/account", permanent: false },\n { source: "/signup", destination: "/account", permanent: false },\n ];\n },\n async rewrites() {\n return [\n { source: "/api/v1/:path*", destination: `${STOREFRONT_URL}/api/v1/:path*` },\n { source: "/img/:path*", destination: `${STOREFRONT_URL}/img/:path*` },\n { source: "/elements/:path*", destination: `${STOREFRONT_URL}/elements/:path*` },\n { source: "/_mock/:path*", destination: `${STOREFRONT_URL}/_mock/:path*` },\n ];\n },\n images: {\n loader: "custom",\n loaderFile: "./lib/cimplify-loader.ts",\n remotePatterns: [\n { protocol: "http", hostname: "127.0.0.1", port: "8787", pathname: "/img/**" },\n { protocol: "http", hostname: "localhost", port: "8787", pathname: "/img/**" },\n { protocol: "http", hostname: "localhost", port: "3000", pathname: "/img/**" },\n { protocol: "https", hostname: "loremflickr.com", pathname: "/**" },\n { protocol: "https", hostname: "images.unsplash.com", pathname: "/**" },\n { protocol: "https", hostname: "static-tmp.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "storefrontassetscdn.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "cdn.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "res.cloudinary.com", pathname: "/cimplify/**" },\n ],\n },\n};\n\nexport default nextConfig;\n' }, { "path": "CLAUDE.md", "kind": "text", "content": "# CLAUDE.md\n\nThis project was scaffolded from a Cimplify storefront template (`cimplify init`).\n\n## Read these first\n\n- **`AGENTS.md`** at the project root \u2014 the file \u2194 `brand.X` field map for *this template's* industry, plus the architectural rules.\n- **`.claude/skills/cimplify-storefront/SKILL.md`** \u2014 the playbook for common tasks (rebrand, add a section, wire a Server Action, deploy, eject a component). Invoke it whenever you're asked to change content, palette, copy, or routing.\n\n## The two-line summary\n\n1. **Edit `lib/brand.ts`** for any visible string.\n2. **Edit `app/globals.css` `@theme` block** for any palette / radius / font change.\n\nThat covers ~95% of what merchants ask for. For anything else, follow the `cimplify-storefront` skill.\n\n## Don't do\n\n- Hardcode strings in pages or components.\n- Enable `cacheComponents: true` in `next.config.ts` \u2014 we're on Cloudflare Workers, where `'use cache'` postponed state blows past CF's 128MB zlib limit. This template stays on Next 16's \"Previous Model\" (ISR): `export const revalidate` per page + `cacheOptions: { revalidate, tags }` on SDK reads.\n- Add `'use cache'`, `cacheTag`, or `cacheLife` anywhere. Use the SDK's `cacheOptions` instead.\n- Use `unstable_cache` \u2014 it's gone in Next 16. Use SDK `cacheOptions` or `fetch.next.{revalidate,tags}`.\n- Run `bun test` (Bun's `vi` shim is incomplete) \u2014 use `bun run test:run`.\n" }, { "path": "app/about/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `About \u2014 ${brand.name}`,\n description: brand.description,\n};\n\nexport default function AboutPage() {\n const a = brand.about;\n const titleParts = a.title.split("\\n");\n return (\n <article className="max-w-3xl mx-auto px-6 sm:px-8 py-16">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2">\n {a.eyebrow}\n </p>\n <h1 className="font-serif text-[clamp(2.25rem,5vw,3.5rem)] font-semibold mb-6 -tracking-[0.02em]">\n {titleParts.map((line, i) => (\n <span key={i}>\n {line}\n {i < titleParts.length - 1 && <br />}\n </span>\n ))}\n </h1>\n <div className="prose prose-lg max-w-none space-y-5 text-foreground/90 leading-relaxed">\n {a.paragraphs.map((p, i) => (\n <p key={i}>{p}</p>\n ))}\n {a.sections.map((s) => (\n <div key={s.heading}>\n <h2 className="font-serif text-3xl font-semibold mt-10 mb-3">{s.heading}</h2>\n <p>{s.body}</p>\n </div>\n ))}\n </div>\n </article>\n );\n}\n' }, { "path": "app/llms.txt/route.ts", "kind": "text", "content": 'import { getServerClient, tags, type Product } from "@cimplify/sdk/server";\nimport { brand } from "@/lib/brand";\nimport { getSiteUrl } from "@/lib/site-url";\n\nexport const revalidate = 3600;\n\nasync function buildLlmsTxt(SITE_URL: string): Promise<string> {\n const client = getServerClient();\n const [productsRes, categoriesRes, collectionsRes] = await Promise.all([\n client.catalogue.getProducts(\n { limit: 500 },\n { cacheOptions: { revalidate: 3600, tags: [tags.products()] } },\n ),\n client.catalogue.getCategories({\n cacheOptions: { revalidate: 3600, tags: [tags.categories()] },\n }),\n client.catalogue.getCollections({\n cacheOptions: { revalidate: 3600, tags: [tags.collections()] },\n }),\n ]);\n\n const products: Product[] = productsRes.ok ? productsRes.value.items : [];\n const categories = categoriesRes.ok ? categoriesRes.value : [];\n const collections = collectionsRes.ok ? collectionsRes.value : [];\n\n const lines: string[] = [];\n lines.push(`# ${brand.name}`);\n lines.push("");\n lines.push(`> ${brand.llms.summary}`);\n lines.push("");\n lines.push("## Browse");\n lines.push(`- [Home](${SITE_URL}/)`);\n lines.push(`- [Shop](${SITE_URL}/shop): Full menu with filter and sort.`);\n\n if (categories.length > 0) {\n lines.push("");\n lines.push("## Categories");\n for (const c of categories) {\n lines.push(\n `- [${c.name}](${SITE_URL}/categories/${c.slug})${c.description ? `: ${c.description}` : ""}`,\n );\n }\n }\n\n if (collections.length > 0) {\n lines.push("");\n lines.push("## Collections");\n for (const c of collections) {\n lines.push(\n `- [${c.name}](${SITE_URL}/collections/${c.slug})${c.description ? `: ${c.description}` : ""}`,\n );\n }\n }\n\n if (products.length > 0) {\n lines.push("");\n lines.push("## Products");\n for (const p of products) {\n const slug = p.slug ?? p.id;\n const price = `${brand.currency} ${p.default_price}`;\n const desc = p.description ? ` \u2014 ${p.description.replace(/\\s+/g, " ").slice(0, 200)}` : "";\n lines.push(`- [${p.name}](${SITE_URL}/shop?product=${slug}) (${price})${desc}`);\n }\n }\n\n lines.push("");\n lines.push("## Information");\n lines.push(`- [About](${SITE_URL}/about)`);\n lines.push(`- [FAQ](${SITE_URL}/faq)`);\n lines.push(`- [Terms of Service](${SITE_URL}/terms)`);\n lines.push(`- [Privacy Policy](${SITE_URL}/privacy)`);\n lines.push(`- [Sitemap (XML)](${SITE_URL}/sitemap.xml)`);\n lines.push("");\n lines.push("## Contact");\n lines.push(`- Email: ${brand.contact.email}`);\n lines.push(`- Phone: ${brand.contact.phone}`);\n lines.push(`- Address: ${brand.contact.address}`);\n\n return lines.join("\\n") + "\\n";\n}\n\n/**\n * `/llms.txt` \u2014 machine-readable site index for LLMs (per llmstxt.org).\n * Lets coding agents and chat assistants find products, categories, and\n * support pages without scraping HTML. Plain Markdown so it streams cheaply\n * into context windows.\n */\nexport async function GET(): Promise<Response> {\n const body = await buildLlmsTxt(await getSiteUrl());\n return new Response(body, {\n headers: {\n "Content-Type": "text/plain; charset=utf-8",\n "Cache-Control": "public, max-age=0, s-maxage=3600, stale-while-revalidate=86400",\n },\n });\n}\n' }, { "path": "app/contact/contact-form.tsx", "kind": "text", "content": `"use client";
|
|
4419
4419
|
|
|
4420
4420
|
import { useState } from "react";
|
|
4421
4421
|
|
|
@@ -4972,7 +4972,7 @@ export const brand: Brand = {
|
|
|
4972
4972
|
* the root layout prerenderable.
|
|
4973
4973
|
*/
|
|
4974
4974
|
export const SITE_URL = "https://example.com";
|
|
4975
|
-
` }, { "path": "lib/site-url.ts", "kind": "text", "content": 'import { SITE_URL } from "./site.config";\n\n/** Canonical absolute URL for this storefront. */\nexport async function getSiteUrl(): Promise<string> {\n return SITE_URL;\n}\n' }, { "path": "lib/cimplify-loader.ts", "kind": "text", "content": 'import type { ImageLoader } from "next/image";\n\nimport { assetUrl, isCimplifyAsset } from "@cimplify/sdk";\n\nconst cdnBase = process.env.NEXT_PUBLIC_CIMPLIFY_CDN_URL?.trim() || undefined;\n\nconst cimplifyImageLoader: ImageLoader = ({ src, width, quality }) => {\n if (isCimplifyAsset(src, cdnBase)) {\n return assetUrl(src, {\n base: cdnBase,\n w: width,\n quality,\n format: "auto",\n });\n }\n return src;\n};\n\nexport default cimplifyImageLoader;\n' }, { "path": "lib/cart.ts", "kind": "text", "content": '"use client";\n\nimport { useCart } from "@cimplify/sdk/react";\n\n/**\n * Reactive cart count for the header pill. Subscribes to the SDK cart\n * state \u2014 updates immediately on add / remove / quantity change.\n */\nexport function useCartCount(): { count: number } {\n const { itemCount } = useCart();\n return { count: itemCount };\n}\n' }, { "path": ".gitignore", "kind": "text", "content": "node_modules\n.next\n.open-next\nout\n.env\n.env.local\n.env*.local\n.DS_Store\n*.tsbuildinfo\nnext-env.d.ts\n" }, { "path": "package.json", "kind": "text", "content": '{\n "name": "__STOREFRONT_NAME__",\n "private": true,\n "version": "0.0.0",\n "scripts": {\n "dev": "concurrently -k -n mock,next -c blue,magenta \\"cimplify-mock --seed services --quiet\\" \\"next dev\\"",\n "dev:storefront": "next dev",\n "dev:mock": "cimplify-mock --seed services",\n "build": "next build",\n "start": "next start",\n "typecheck": "tsc --noEmit",\n "test": "vitest",\n "test:run": "vitest run",\n "check:brand": "vitest run __tests__/brand.test.ts",\n "check:cart": "vitest run __tests__/cart-flow.test.ts",\n "check:contract": "vitest run __tests__/contract.test.ts",\n "check": "bun run typecheck && bun run test:run"\n },\n "dependencies": {\n "@cimplify/sdk": "^0.56.0",\n "next": "^16.2.6",\n "react": "^19.0.0",\n "react-dom": "^19.0.0"\n },\n "devDependencies": {\n "@tailwindcss/postcss": "^4.2.4",\n "@types/node": "^22.10.0",\n "@types/react": "^19.0.0",\n "@types/react-dom": "^19.0.0",\n "concurrently": "^9.0.0",\n "tailwindcss": "^4.2.4",\n "typescript": "^5.9.3",\n "vitest": "^4.1.5"\n }\n}\n' }, { "path": "bun.lock", "kind": "binary", "content": "ewogICJsb2NrZmlsZVZlcnNpb24iOiAxLAogICJjb25maWdWZXJzaW9uIjogMSwKICAid29ya3NwYWNlcyI6IHsKICAgICIiOiB7CiAgICAgICJuYW1lIjogIl9fU1RPUkVGUk9OVF9OQU1FX18iLAogICAgICAiZGVwZW5kZW5jaWVzIjogewogICAgICAgICJAY2ltcGxpZnkvc2RrIjogIl4wLjU0LjAiLAogICAgICAgICJuZXh0IjogIl4xNi4yLjYiLAogICAgICAgICJyZWFjdCI6ICJeMTkuMC4wIiwKICAgICAgICAicmVhY3QtZG9tIjogIl4xOS4wLjAiLAogICAgICB9LAogICAgICAiZGV2RGVwZW5kZW5jaWVzIjogewogICAgICAgICJAdGFpbHdpbmRjc3MvcG9zdGNzcyI6ICJeNC4yLjQiLAogICAgICAgICJAdHlwZXMvbm9kZSI6ICJeMjIuMTAuMCIsCiAgICAgICAgIkB0eXBlcy9yZWFjdCI6ICJeMTkuMC4wIiwKICAgICAgICAiQHR5cGVzL3JlYWN0LWRvbSI6ICJeMTkuMC4wIiwKICAgICAgICAiY29uY3VycmVudGx5IjogIl45LjAuMCIsCiAgICAgICAgInRhaWx3aW5kY3NzIjogIl40LjIuNCIsCiAgICAgICAgInR5cGVzY3JpcHQiOiAiXjUuOS4zIiwKICAgICAgICAidml0ZXN0IjogIl40LjEuNSIsCiAgICAgIH0sCiAgICB9LAogIH0sCiAgInBhY2thZ2VzIjogewogICAgIkBhbGxvYy9xdWljay1scnUiOiBbIkBhbGxvYy9xdWljay1scnVANS4yLjAiLCAiIiwge30sICJzaGE1MTItVXJjQUJCKzRiVXJGQUJ3Ymx1VElCRXJYd3Zic1UvVjdUWldmbWJnSmZia3dpQnV6aVM5Z3hkT0RVeXVpZWNmZEdRODVqZ2xNVzZqdVMzK3o1VHNLTHc9PSJdLAoKICAgICJAYmFiZWwvcnVudGltZSI6IFsiQGJhYmVsL3J1bnRpbWVANy4yOS4yIiwgIiIsIHt9LCAic2hhNTEyLUppRFNoSDQ1ektIV3lHZTRaTlZSckNqQno4Tmg5VE1tWkcxa2g0UVRLOGhDQlRXQmk4RGEraTdzMWZKdzcvbFlwTTRjY2VwU05mcXpaL1F2QUJCaTVnPT0iXSwKCiAgICAiQGJhc2UtdWkvcmVhY3QiOiBbIkBiYXNlLXVpL3JlYWN0QDEuNS4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBiYWJlbC9ydW50aW1lIjogIl43LjI5LjIiLCAiQGJhc2UtdWkvdXRpbHMiOiAiMC4yLjkiLCAiQGZsb2F0aW5nLXVpL3JlYWN0LWRvbSI6ICJeMi4xLjgiLCAiQGZsb2F0aW5nLXVpL3V0aWxzIjogIl4wLjIuMTEiLCAidXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUiOiAiXjEuNi4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBkYXRlLWZucy90eiI6ICJeMS4yLjAiLCAiQHR5cGVzL3JlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgImRhdGUtZm5zIjogIl40LjAuMCIsICJyZWFjdCI6ICJeMTcgfHwgXjE4IHx8IF4xOSIsICJyZWFjdC1kb20iOiAiXjE3IHx8IF4xOCB8fCBeMTkiIH0sICJvcHRpb25hbFBlZXJzIjogWyJAZGF0ZS1mbnMvdHoiLCAiQHR5cGVzL3JlYWN0IiwgImRhdGUtZm5zIl0gfSwgInNoYTUxMi16MWdTQWxjZWQxeVkraU0rbUhERXRJa0Q4VUkzRWJzNTJNdUJQeHZWNmY1aFJ1dGsreHZDSC93dUI3aERxRHpLOUpHNUZvTXo1bmhycXRTczF3anQxQT09Il0sCgogICAgIkBiYXNlLXVpL3V0aWxzIjogWyJAYmFzZS11aS91dGlsc0AwLjIuOSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYmFiZWwvcnVudGltZSI6ICJeNy4yOS4yIiwgIkBmbG9hdGluZy11aS91dGlscyI6ICJeMC4yLjExIiwgInJlc2VsZWN0IjogIl41LjEuMSIsICJ1c2Utc3luYy1leHRlcm5hbC1zdG9yZSI6ICJeMS42LjAiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL3JlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgInJlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgInJlYWN0LWRvbSI6ICJeMTcgfHwgXjE4IHx8IF4xOSIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkB0eXBlcy9yZWFjdCJdIH0sICJzaGE1MTIteC9QRERDWXpvcVBwanJkeWIzVmN5eWxUSTJJalVYRXRZREdpNWZvaDdLc25tTkpJSWFWd0EyR0xnREgxZHBzMUdnWGlKYkE2MGhNK0F5dVRmUXpJdnc9PSJdLAoKICAgICJAY2ltcGxpZnkvc2RrIjogWyJAY2ltcGxpZnkvc2RrQDAuNTQuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYmFzZS11aS9yZWFjdCI6ICJeMS40LjEiLCAiY2xzeCI6ICJeMi4xLjEiLCAiZGF0ZS1mbnMiOiAiXjQuMS4wIiwgImxpYnBob25lbnVtYmVyLWpzIjogIjEuMTIuNDEiLCAicmVhY3QtZGF5LXBpY2tlciI6ICJeOS4xNC4wIiwgInRhaWx3aW5kLW1lcmdlIjogIl4zLjUuMCIsICJ6b2QiOiAiXjQuNC4zIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBwYXlzdGFjay9pbmxpbmUtanMiOiAiXjIuMjIuOCIsICJtc3ciOiAiPj0yLjAuMCIsICJyZWFjdCI6ICI+PTE3LjAuMCIsICJ2aXRlc3QiOiAiPj0yLjAuMCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkBwYXlzdGFjay9pbmxpbmUtanMiLCAibXN3IiwgInJlYWN0IiwgInZpdGVzdCJdLCAiYmluIjogeyAiY2ltcGxpZnktbW9jayI6ICJkaXN0L21vY2svY2xpLm1qcyIgfSB9LCAic2hhNTEyLVlVTi9sT3FWaUhjaTF2OVVTV1d3QVd0eTI5cEVYQmRMVHVLYXJTbDhFcGFmV2g1amtkR1oxUStOZTkvYmZnVFptUjhpVFVsdEE4VTdnbFYyRm9SU2dnPT0iXSwKCiAgICAiQGRhdGUtZm5zL3R6IjogWyJAZGF0ZS1mbnMvdHpAMS40LjEiLCAiIiwge30sICJzaGE1MTItUDVMVU5odGJqNllmSTNpSmp3NUVMOWVVQUc2T2l0RDBXM2ZXUWNwUWpEUmMvUUlzTDB0Uk51TzFQY0R2UGNjV0wxZlNUWFhkRTFkcytsOTVEVi9PRkE9PSJdLAoKICAgICJAZW1uYXBpL2NvcmUiOiBbIkBlbW5hcGkvY29yZUAxLjEwLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGVtbmFwaS93YXNpLXRocmVhZHMiOiAiMS4yLjEiLCAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTIteXE2T2tKNHA4MkNBZlBsMHU5bVFlYlFIS1BKa1k3V3JJdWsyMDVjVFluWWUrazJaOFlCaDExRnJiUkcvSDZpaGlycWNhY09nbDJCSU84b3lNUUxlWHc9PSJdLAoKICAgICJAZW1uYXBpL3J1bnRpbWUiOiBbIkBlbW5hcGkvcnVudGltZUAxLjEwLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTItZXd2WWxrODZ4VW9HSTB6UVJOcS9tQysxNlIxUWVEbEtReTIxS2kzb1NZWE5nTGI0NUdWMVA2QTBNKy9zNm55Q3VORHFlNVZwYVk4NEJ6WEd3VmJ3RkE9PSJdLAoKICAgICJAZW1uYXBpL3dhc2ktdGhyZWFkcyI6IFsiQGVtbmFwaS93YXNpLXRocmVhZHNAMS4yLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTItdVRJSTdPWUYrL01lcy9NcmNJT1lwNXlPdFNNTEJXU0lvTFBwY2d3aXBvaUtibGk2azMyMnRjb0ZzeG9JSXhQRHFXMDFTUUdBZ2tvNEV6WmkyQk52Mnc9PSJdLAoKICAgICJAZXNidWlsZC9haXgtcHBjNjQiOiBbIkBlc2J1aWxkL2FpeC1wcGM2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYWl4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi0xVkNJQ1d5cGVRS2hWYkU5b1cvc0phQW1qTHhoVnFhY2RrdlBMRWp3bHR0amZ3RU5SU0NsUzhFakJ6MEt6UnlGU0NQRElrdVhXMzRKZS92azd6ZEI3UT09Il0sCgogICAgIkBlc2J1aWxkL2FuZHJvaWQtYXJtIjogWyJAZXNidWlsZC9hbmRyb2lkLWFybUAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtIiB9LCAic2hhNTEyLVFOZFFFcHM3RGZGd0UzaFhpVTRCWmVPVjY4SEh6WXdHZDBOdGhoZDN1Q2trRUtLNy9SNk1UZ00wUDdIN0ZBczVwVS9ESVdzdmlNbUVHeEVveElaK1pRPT0iXSwKCiAgICAiQGVzYnVpbGQvYW5kcm9pZC1hcm02NCI6IFsiQGVzYnVpbGQvYW5kcm9pZC1hcm02NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItYkJ5NjlwZ2ZoTUd0Q253cEMveDVRaGZ4QXovY0JnUTllbmJ0d2pmNlY5bG5QSS9oTXlUOWlXcFIxYXJtMGwza3R0VHI0TDBLU0xwS21McC9pbEtTOUE9PSJdLAoKICAgICJAZXNidWlsZC9hbmRyb2lkLXg2NCI6IFsiQGVzYnVpbGQvYW5kcm9pZC14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImFuZHJvaWQiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1UVmhkVnRRSUZ1VnBJSVIyODJidGNHQzJvR1FvU2ZaZm1CZFRpcDJhbkNhVlljcVdsWlhHY2RjS0lVa2xmWDJ3ajBKa2xOWWd6MzlPQnFoMmNxWHZjUT09Il0sCgogICAgIkBlc2J1aWxkL2Rhcndpbi1hcm02NCI6IFsiQGVzYnVpbGQvZGFyd2luLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVkxZ2lDZk00bmxIRFdFZlNja016ZVdOZFFTMzFCUUdzOS9yb3V3NlViOTF0a0s3OWFJTVRIM3E5eEh2ekg4ZDB3RHJ1NUNpMGtXQjhiM3VwL25sMTZnPT0iXSwKCiAgICAiQGVzYnVpbGQvZGFyd2luLXg2NCI6IFsiQGVzYnVpbGQvZGFyd2luLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiZGFyd2luIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItQ0pzcnk4WkdNNVZGVmV5VVlCM2NkS3BkL0g2OVBZZXo0ZUpoMVcvdDM4dnp1dGRqRWp0UDdoQjZlTEtCb09keGNBbEN0RVlIelEvUEovb1U5STR1MEE9PSJdLAoKICAgICJAZXNidWlsZC9mcmVlYnNkLWFybTY0IjogWyJAZXNidWlsZC9mcmVlYnNkLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi15WXErMzlObFRSelUyWG1vUFc0bDVJZnBsOWZxU2swbkFKWU0vVi9XVUdQRUZmZWsxZXBMSEpJa1RRTTZiQnMxc3dBcGpPNW5XZ3ZyODQzZzZUanh1UT09Il0sCgogICAgIkBlc2J1aWxkL2ZyZWVic2QteDY0IjogWyJAZXNidWlsZC9mcmVlYnNkLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiZnJlZWJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLTBGZ3ZPSjZVVU1mbHNIU1BMemRmRG5uQkJWb0NEdEJUVnluL01yV2xvVU52cS81U0ZtaDEzbDNkdmdSUGtEaWhSeGI3N1kxN01icWJDQWEyc3RyTVFRPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtYXJtIjogWyJAZXNidWlsZC9saW51eC1hcm1AMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTIta3JvNGMwUDg1R01mRllxVzRUV09wdm1GOHJGU2hiV0duckxxbHpwNFgxVE5XalJZM0pNWVVmREN0T3hQS09JWThCMFdDOEhONTFoR1A0STRoejRBYVE9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1hcm02NCI6IFsiQGVzYnVpbGQvbGludXgtYXJtNjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi0rODlVc1FUZlhkbWpJdlpTNm5Vbk9PTG9YbmtVVEI5aFI1UUFlTHJRZHpPU1dadk5TQVhBdGNSREhXdHFBVXRBbXY3Wk0xV1BPT2VTeER6enpNb2dpUT09Il0sCgogICAgIkBlc2J1aWxkL2xpbnV4LWlhMzIiOiBbIkBlc2J1aWxkL2xpbnV4LWlhMzJAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJpYTMyIiB9LCAic2hhNTEyLXlURWpvYXB5OFVQM3J2OGRCMGlwM0FmTXBSYnloU04zK2hZOG1vL2k0UVhGZUR4bWlZYkVLcDNaUmpCS2NPUDg2MlVhNGIxUERmd2x2YnV3WTdoSUdRPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtbG9vbmc2NCI6IFsiQGVzYnVpbGQvbGludXgtbG9vbmc2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItTmVxcVlrcmNHekZ3aTZDR1JHTk1PaldHR1NZT3Bxd0NqUzlmdmFVbFg1czN6d090bjFxd2cxczJpRTJzdkJlNFEvWU9HMXE2ODc1bGNBb1FLL0Y0VkE9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1taXBzNjRlbCI6IFsiQGVzYnVpbGQvbGludXgtbWlwczY0ZWxAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJub25lIiB9LCAic2hhNTEyLUljdlRsRjlkdExyZkwvTThXZ05JL3FKWUJFTlAzZWtnc0hiWVVJekV6cTVYSnp6VkVWL2ZYWTlXRlBmRUVYbXUzY2sycUpQOExHL3AzUThmN1pjMlhnPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtcHBjNjQiOiBbIkBlc2J1aWxkL2xpbnV4LXBwYzY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAicHBjNjQiIH0sICJzaGE1MTItSE95MGFMVEpUVnRvVGVHWmg0SFNYYU82TTk1cXU0azVsSmNINGd4djU2aWF5Y2Z6MVM4R08vNUpoNlg0WTFZaUkwaDdjUnlMaStIaXhNUis4OHN3YWc9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1yaXNjdjY0IjogWyJAZXNidWlsZC9saW51eC1yaXNjdjY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1pOEpVREF1ZnB6OWpPem80eUlTaENUY1h6UzA3dkVnV3p5WDNOSDJHN0xFRlZnckxFaGp3TDNhakZFNGZaSTNJNFpnaU03SkgzR1E3UmVPYlJPdlNVQT09Il0sCgogICAgIkBlc2J1aWxkL2xpbnV4LXMzOTB4IjogWyJAZXNidWlsZC9saW51eC1zMzkweEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogInMzOTB4IiB9LCAic2hhNTEyLWpGbnUrNlViTGx6SWpQUXBXQ05oNVF0cmNOZk1MamdJYXZud1BRQWZvR3g0cTE3b2NPVTlNc1EyUVZ2Rnh3UW9XcFpUOER2VExvb1R2bU9RWGtPNTFnPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgteDY0IjogWyJAZXNidWlsZC9saW51eC14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItNmUwY3ZYd3pPblZXSkhxK21za1A4RE5TcktCcjFiVUxCdm5GTHBjMUtZK2QraXJaU2daMDJUR3NlNUZzYWZLUzVqZzJlNHBidks2VFBYYUYvQTYrQ0E9PSJdLAoKICAgICJAZXNidWlsZC9uZXRic2QtYXJtNjQiOiBbIkBlc2J1aWxkL25ldGJzZC1hcm02NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibm9uZSIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItdlVua0JZeFpXNGhML2llOTFoU3FhU05qdWxPbllYRTFWU0x1c252SGcydTNqZXdKQnozWXpCOStvQ3c4REFCZVZxWkdnOTR0OXR5WkZvSG1hOGdXWlE9PSJdLAoKICAgICJAZXNidWlsZC9uZXRic2QteDY0IjogWyJAZXNidWlsZC9uZXRic2QteDY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJub25lIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItWEFnOHBJUW41Q3poT0I4b2RJY0FtNDJRc09mYTk4U0JlS1VkbzR4YThPdlg4TGJNWnFFdGdlV0U5UC9XeHQ3TWxHMlFxdmpHdGhzK25xNDhUclVpS3c9PSJdLAoKICAgICJAZXNidWlsZC9vcGVuYnNkLWFybTY0IjogWyJAZXNidWlsZC9vcGVuYnNkLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJvcGVuYnNkIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1DdDJXY0ZFQU5sRkR0cDFuVkFYU05CUER4eVUrajcrdElkLy9pSFhVMmYvbE41QW1PNHpMeWhEY3BSNUN6MXIwOG1WeHp0M0pweXQ0UG1YUTFPNis3QT09Il0sCgogICAgIkBlc2J1aWxkL29wZW5ic2QteDY0IjogWyJAZXNidWlsZC9vcGVuYnNkLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAib3BlbmJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLXhBR0doeU9ROU90bTFYdThOVDFpZkdMbkE2TTNzSnhaNml4eWxiK3ZJVVZ6dnZkNkdPQUxwd1FyWXJ0bFBvdU1xZC92U2JnZWh6NkhhVms0KzdBZmh3PT0iXSwKCiAgICAiQGVzYnVpbGQvc3Vub3MteDY0IjogWyJAZXNidWlsZC9zdW5vcy14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogInN1bm9zIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItTXcrdHp5NHBwNndaRUswK0x3cjc2cFdManJ0am1KeVVCMjN0SEtxRURQNzRSM3E5NWx1WS9iWHFYWmVZbDROWWx2d09xb1JLbEluUWlhbGdDS3k2N1E9PSJdLAoKICAgICJAZXNidWlsZC93aW4zMi1hcm02NCI6IFsiQGVzYnVpbGQvd2luMzItYXJtNjRAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1BVlVQNDI4VlFUU2RkZ3V6OWRPOW5nYitFNWFTY3lnN25PZUpEckYxSFBZdTU1NWdtemEzYkRHTVBobVZYTDhzdkRTb3FQQ3NDUGpiMjY1eUcva0xLUT09Il0sCgogICAgIkBlc2J1aWxkL3dpbjMyLWlhMzIiOiBbIkBlc2J1aWxkL3dpbjMyLWlhMzJAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJpYTMyIiB9LCAic2hhNTEyLWkxc1crMWkrb1d2UXpTZ2ZSY3h4RzJrNEk5bjNPOU5ScXk4VSt1dWdhVDJEeTdrTE85WTd3STcyaGFPYWh4Y2VNWDhoWkF6Z0dvdTFGaG5kUmxkeFJnPT0iXSwKCiAgICAiQGVzYnVpbGQvd2luMzIteDY0IjogWyJAZXNidWlsZC93aW4zMi14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItbk9UMnZaTnc2aEorejQzb1AxU1BlYS9HLzZBYk42WCtiR05oTnVxOE50Ukh5NHdzTWh3NzY1SUtMTm1uamVrN0d2aldCWVE4UTVWQm9ZVEZnOXkxVVE9PSJdLAoKICAgICJAZmxvYXRpbmctdWkvY29yZSI6IFsiQGZsb2F0aW5nLXVpL2NvcmVAMS43LjUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGZsb2F0aW5nLXVpL3V0aWxzIjogIl4wLjIuMTEiIH0gfSwgInNoYTUxMi0xSWg0V1RXeXcwK2xLeUZNY0JIR2JiNVU1RnR1SEp1dWpveXlyNXpUYVdTNUVZTWVUNkpiMkF1RGVmdHNDc0V1Y2hPK21NMmlqNStxOWNyaHlkekxoUT09Il0sCgogICAgIkBmbG9hdGluZy11aS9kb20iOiBbIkBmbG9hdGluZy11aS9kb21AMS43LjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGZsb2F0aW5nLXVpL2NvcmUiOiAiXjEuNy41IiwgIkBmbG9hdGluZy11aS91dGlscyI6ICJeMC4yLjExIiB9IH0sICJzaGE1MTItOWdaU0FJNVhNMzY4ODBQUE1tLy85ZGZpRW5nWW9DNkFtMml6RVMxRkY0MDZZRnNqdnlCTW1lSjJnNFNBanUzeFd3dHV5bk5SRkwyczloZ3hwTEk1U1E9PSJdLAoKICAgICJAZmxvYXRpbmctdWkvcmVhY3QtZG9tIjogWyJAZmxvYXRpbmctdWkvcmVhY3QtZG9tQDIuMS44IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBmbG9hdGluZy11aS9kb20iOiAiXjEuNy42IiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgInJlYWN0IjogIj49MTYuOC4wIiwgInJlYWN0LWRvbSI6ICI+PTE2LjguMCIgfSB9LCAic2hhNTEyLWNDNTJiSHdNL24vQ3hTODdGSDB5V2RuZ0VacmpkdExXL3FWcnVvNjhxZytwcks3WlE0WUdkdXQyR3lEVnBvR2VBWWUvaDg5OXJWZU9WbTZPaTQwazJBPT0iXSwKCiAgICAiQGZsb2F0aW5nLXVpL3V0aWxzIjogWyJAZmxvYXRpbmctdWkvdXRpbHNAMC4yLjExIiwgIiIsIHt9LCAic2hhNTEyLVJpQi95SWg3OHBjSXhsNmxMTUcwQ2dCWEFaMlkwZVZIcU1QWXVndSs5VTBBZVQ2WUJlaUpwZjdsYmRKTkl1Z0ZQNVNJandOUmdvNERoUjFReGkyNkdnPT0iXSwKCiAgICAiQGltZy9jb2xvdXIiOiBbIkBpbWcvY29sb3VyQDEuMS4wIiwgIiIsIHt9LCAic2hhNTEyLVRkNzZxN2o1N28vdExWZGdTNzQ2Y1lBUmZTeXhrOGlFZlJ4ZXdMOWg0T016WWhiVzRUQWNwcGwwbVQ0ZXlxWGRkaDZML2p3b003NW1vN2l4YS9wQ2VRPT0iXSwKCiAgICAiQGltZy9zaGFycC1kYXJ3aW4tYXJtNjQiOiBbIkBpbWcvc2hhcnAtZGFyd2luLWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiAiMS4yLjQiIH0sICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLWltdFEzV01KWGJNWTRmeGIvTmRwNkhCVE5WdFdDVUkwV2RvYnloZUdmNSthZDZ4WDhWSURPOHUyeEU0cWMvZnIwOENLRy83ZERzZUZ0bjZNNmcvcjN3PT0iXSwKCiAgICAiQGltZy9zaGFycC1kYXJ3aW4teDY0IjogWyJAaW1nL3NoYXJwLWRhcndpbi14NjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWRhcndpbi14NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1ZTkVGQUYvNEtRL1BlVzBOK3IrYVZWc29JWTAvcXh4aWtGMlNXZHArTlJrbU1CN3k5TEJaQVZxUTR5aEdDbS9IM0gyNzBPU3lrcW1RTUtMQmhCSkRFdz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjRAMS4yLjQiLCAiIiwgeyAib3MiOiAiZGFyd2luIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi16cWpqbzdSYXRGZkZvUDBNa1E1MWpmdUZaQm5WRTJwUmlheWRLSjFHL3JIWnZuc3JIQU9jUUFMSWk5c0E1Y281eGVuUWRUdWdDdnRiMWN1Zjc4VmY0Zz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4teDY0IjogWyJAaW1nL3NoYXJwLWxpYnZpcHMtZGFyd2luLXg2NEAxLjIuNCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi0xSU9kNXhmVmhsR3dYK3pYdjJOOTNrMHlNT052VWxBTnlsYkp3MWVUYWg4Sy9KdHBpMTVLQytXU2lhWC9uQm1ibTJIeFJNMWdaMG5TZGpTc3JaYkdLZz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm0iOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm1AMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybSIgfSwgInNoYTUxMi1iRkk3eGNLRkVMZGlOQ1ZvdjhlNDRJYTR1MmJ5QStsM1h0c0FqK1E4dGZDd082QlE4aURvallkdm9QTXFzS0RrdW9PbytYNkhaQTBzMHExMUFOTVE4QT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm02NCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybTY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1leGNqWDhEZnNJY0oxMHgxS3pyNFJjV2UxZWRDOVBxdURSUlB4M1lWQ3ZRditVNXA3WWluMnMzMmZ0emlrWG9qYjFQSUZjLzlNdDI4L3kraVJrbGtydz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1wcGM2NCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi1GTXV2R2lqTERZRzZsVytiL1V2eWlsVVd1NUF5dSszcjJkMVM4bm90aUdDSXlZVS83NmVpZzFVZk1ta1o3dndnT3J6S3psUWJGU3VRZmdtN0dZVVBwQT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1yaXNjdjY0IjogWyJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgtcmlzY3Y2NEAxLjIuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1vVkRiY1I0elVDMGNlODJ0ZXViU20reDZFVGl4dEtaQmgvcWJSRUlPY0kzY1VMekR5YjE4U3IvV2N5eDdOUlFlUXpPaUhUTmJaRkYxVXdQUzJzY3lHQT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1zMzkweCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXMzOTB4QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJzMzkweCIgfSwgInNoYTUxMi1xbXA5VnJ6Z1BnTW9HWnlQdnJRSHFrMDJ1eWpBMC9RclRPMjZUcWs2bDRaVjBNUFdJVzZMVGtxT0lvditKMXlFdTdNYkZRYURwd2R3SktoYkp2dVJ4UT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjRAMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi10SnhpaUxzbUhjOUF4MWJ6M29hT1lCVVJUWEdJUkRPREJxaHZlVkhvbnJISjkvK2s4OXFiTGwwYmNKbnMrZTR0NHJ2YU5CeGFFWnNGdFNmQWRxdVBydz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjRAMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLUZWUUh1d3gxSUl1Tm93OVFBYllVekorRW44S2NWbTlMazUrdUdVUUpIYVptTUVDWm1PbGl4OUhuSDduMVRSa1hNUzBwR3hJSm9rSVZCOVN1cVpHR1h3PT0iXSwKCiAgICAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4bXVzbC14NjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wteDY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItK0xweUJrN0w0NFpJWHd6L1ZZZmdsYVgvb2t4ZXpFU2M2VXhEU295bzJLczZKeGM0WTdzR2pwZ1U5czRQTWdxZ2pqMWdaQ3lsVGllTmFtcUExTUY3RGc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4LWFybSI6IFsiQGltZy9zaGFycC1saW51eC1hcm1AMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybSI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItOWRMcXN2d3RnMXV1WEJHWktzeGVtOTU5NSt1anYwc0o2Vmk4d2NUQU5TRnB3Vi9HT05hdDVlQ2t6UW8vMU82elJJa2gwbS84KzVCanJScjdqRFVTWnc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4LWFybTY0IjogWyJAaW1nL3NoYXJwLWxpbnV4LWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm02NCI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1iS1F6YUpSWS9ia1BPWHlLeDVFVnVwN3FrYW9qRUNHNk5MWXN3Z2t0T1pqYVhlY1NBZUNXaVp3d2lGZjMvWStPMUhyYXVpRTNGVnNHeEZnOGMyNHJaZz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGludXgtcHBjNjQiOiBbIkBpbWcvc2hhcnAtbGludXgtcHBjNjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0IjogIjEuMi40IiB9LCAib3MiOiAibGludXgiLCAiY3B1IjogInBwYzY0IiB9LCAic2hhNTEyLTd6em53TmFxVzZZdHNmckdHREE2QlJrSVNLQUFFMUpvMFFkcE5ZWE5NSHUyKzBkVHJQZmxUTE5rcGM4bDdNVVA1TTE2WkpjVXZ5c1ZXV3JNZWZacXVBPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eC1yaXNjdjY0IjogWyJAaW1nL3NoYXJwLWxpbnV4LXJpc2N2NjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXJpc2N2NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi01MWdKdUxQVEthN3BpWVBhVnM4R21CeW83L1U3LzdUWk9xK2NuWEpJSFpLYXZJUkhBUDc3ZTNOMkhFbDNkZ2lxZEQvdzB5VWZpSm5JSTc3UHVEREZkdz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGludXgtczM5MHgiOiBbIkBpbWcvc2hhcnAtbGludXgtczM5MHhAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXMzOTB4IjogIjEuMi40IiB9LCAib3MiOiAibGludXgiLCAiY3B1IjogInMzOTB4IiB9LCAic2hhNTEyLW5RdENrMFBkS2ZobzNlQzVNcmJRb2lnSjJnZDFDZ2RkVU1rYWJVaityQmV2czh0WjJjVUxPeDQ2RTdveVgrMDRXR2ZBQmdJd21NQzBWcWllVGlSNGpnPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eC14NjQiOiBbIkBpbWcvc2hhcnAtbGludXgteDY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLU1FemQ4SFBLeFZ4VmVud0FhK0pSUHdFQzdRRmpvUFd1UzVOWm5CdDZCM3B1N0VHMkdlMGlkMW9MSFpwUEpkbjNPUUsrQlFEaXc5elN0aUhCVEpRUVFRPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eG11c2wtYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGludXhtdXNsLWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItZnBySlI2R3RSc010Nkt5ZnE0NElzQ2hWWmVHTjk3Z1REMzMxd2VSMWV4MWMxcnlwREVBQk42VG0yeGExd0U2bFliNURkRW5rMDNOWlBxQTdJZDIxeWc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4bXVzbC14NjQiOiBbIkBpbWcvc2hhcnAtbGludXhtdXNsLXg2NEAwLjM0LjUiLCAiIiwgeyAib3B0aW9uYWxEZXBlbmRlbmNpZXMiOiB7ICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXhtdXNsLXg2NCI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSmc4d05UMU1Vekl2aEJGeFZpcXJFaFdER3pxeW1vM3NWN3o3WnNhV2JaTkRMWFJKWm9SR3JqdWxwNjBZWXRWNHdmWThWSUtjV2lkam9qbExjV3JkOFE9PSJdLAoKICAgICJAaW1nL3NoYXJwLXdhc20zMiI6IFsiQGltZy9zaGFycC13YXNtMzJAMC4zNC41IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvcnVudGltZSI6ICJeMS43LjAiIH0sICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1PZFdURWlWa1kyUEh3cWtiQkk4ZnJGeFFRRmVrSGFTU2tVSUprd3pjbFdaZTY0TzFYNFVsVWpxcXFMYVBiVXBNT1FrNkZCdS9IdGxHWE5ibElzMGh1dz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzItYXJtNjQiOiBbIkBpbWcvc2hhcnAtd2luMzItYXJtNjRAMC4zNC41IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1XUTNBZ1dDV1lTYjJ5dCtJRzhtbkM2SmRrOVdoczdPMGd4cGhibHNMdmRoU3BTVHRtdTY5WkcxR2tiNk51dnhzTkFDd2lQVjZjTlNaTnp0MEtQc3c3Zz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzItaWEzMiI6IFsiQGltZy9zaGFycC13aW4zMi1pYTMyQDAuMzQuNSIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAiaWEzMiIgfSwgInNoYTUxMi1GVjltLzdObWVDbVNIREQ1ajQrNHBOSThDcDNhVytKdkxvWGNUVW8wSXF5alNmQVpKOGRJVW1pangxcWFKc0lpVStIb3N3NnhNNUtpakFXUkpDU2dOZz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzIteDY0IjogWyJAaW1nL3NoYXJwLXdpbjMyLXg2NEAwLjM0LjUiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi0rMjlZTXNxWTIvOWVGRWlXOTNlcVdudUxjV2N1Zm93WGV3d1NOSVQ2VXdaZFVVQ3JNM29Gak1XSC9aNi9UTW1iNGhsRmVubWZBVmJwV2V1cDJqcnlDdz09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogWyJAanJpZGdld2VsbC9nZW4tbWFwcGluZ0AwLjMuMTMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjIjogIl4xLjUuMCIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjQiIH0gfSwgInNoYTUxMi0ya2t0LzduaUo2TWdFUHhGMGJZZFE2ZXRaYUErZlF2RGNMS2NraHkxeUlRT3phb0tqQkJqU2o2My9hTFZqWUUzcWhSdDVkdk0rdVV5ZkNnNlVLQ0JiQT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3JlbWFwcGluZyI6IFsiQGpyaWRnZXdlbGwvcmVtYXBwaW5nQDIuMy41IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogIl4wLjMuNSIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjQiIH0gfSwgInNoYTUxMi1MSTl1LytsYVlHNERzMVRES1NKVzJZUHJJbGNWWU93aTJmVUM2eEI0M2x1ZUNqZ3hWNGxmZk9DWkN0WUZpSDZUTk9YK3RRS1h4OTdUNElLSGJoeUhFUT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3Jlc29sdmUtdXJpIjogWyJAanJpZGdld2VsbC9yZXNvbHZlLXVyaUAzLjEuMiIsICIiLCB7fSwgInNoYTUxMi1iUklTZ0NJalAyMC90YldTUFdNRWk1NFFWUFJaRXhrdUQ5bEpMK1VJeFVLdHdWSkE4d1cxVHJiMWpNczFSRlhvMUNCVE5aLzVocEM5UXZtS1dkb3BLdz09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3NvdXJjZS1tYXAiOiBbIkBqcmlkZ2V3ZWxsL3NvdXJjZS1tYXBAMC4zLjExIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogIl4wLjMuNSIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjUiIH0gfSwgInNoYTUxMi1aTXAxVjhaRmNQRzVkSVduUUxyM05TSTFNaUNVN1VFVGRTL0EwRzhWL1hXSHZKdjNac0ZxdXRKbjFZNVJQbUFQWDZGM0JpRTM5N09xdmVVLzlOQ3VJQT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3NvdXJjZW1hcC1jb2RlYyI6IFsiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjQDEuNS41IiwgIiIsIHt9LCAic2hhNTEyLWNZUTkzMTBncnF4dWVXYmwrV3VJVUlhaVVhRGNqN1dPcTVmVmhFbGpOVmdSZk9VaFk5ZnkyelR2Zm9xV3NuZWJoOFNsNzBWU2NGYklDdkpuTEtCME9nPT0iXSwKCiAgICAiQGpyaWRnZXdlbGwvdHJhY2UtbWFwcGluZyI6IFsiQGpyaWRnZXdlbGwvdHJhY2UtbWFwcGluZ0AwLjMuMzEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvcmVzb2x2ZS11cmkiOiAiXjMuMS4wIiwgIkBqcmlkZ2V3ZWxsL3NvdXJjZW1hcC1jb2RlYyI6ICJeMS40LjE0IiB9IH0sICJzaGE1MTItenpOUitTZFFTREp6Yzhqb2FlUDhRUW9DUXI4TnVZeDJkSUl5dGwxUWVCRVpISjl1VzZoZWJzcllnYno4aEp3VVFhbzNUV0NNdG1mVjhOdTF0d09MQXc9PSJdLAoKICAgICJAbmFwaS1ycy93YXNtLXJ1bnRpbWUiOiBbIkBuYXBpLXJzL3dhc20tcnVudGltZUAxLjEuNCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAdHlieXMvd2FzbS11dGlsIjogIl4wLjEwLjEiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQGVtbmFwaS9jb3JlIjogIl4xLjcuMSIsICJAZW1uYXBpL3J1bnRpbWUiOiAiXjEuNy4xIiB9IH0sICJzaGE1MTItM05RTk5nQTFZU2xKYi9rTUgxaWxkQVNQOUhXNy83a1luUkkyc3pXSmFvZmFTMWhXbWJHSTRIK2QzKzIyYUd6WFhOOUlKK24rR2lGVmNHaXBKUDE4b3c9PSJdLAoKICAgICJAbmV4dC9lbnYiOiBbIkBuZXh0L2VudkAxNi4yLjYiLCAiIiwge30sICJzaGE1MTItZ2Q4SG9ITjR1Zmo3M1dtUjNKbVZvbHJwSlI0N0lMSzZMb3VQNXhFbFBnbGFWeGlyNmUxYTdWenZUdkRXa09vUFhUOXJra1R6eUN4QnU0eWVaZlp3Y3c9PSJdLAoKICAgICJAbmV4dC9zd2MtZGFyd2luLWFybTY0IjogWyJAbmV4dC9zd2MtZGFyd2luLWFybTY0QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVpKR2trY05mWWdyck1rcU9kWjd6b0xhMVRPeTBxcGNNZmsvejRNaC9GS1V6NDBnVk8rSE5RV3FtTHhmNjdaNVdCNjREUnAwZGhFYnlIZmVsKzZzSlVnPT0iXSwKCiAgICAiQG5leHQvc3djLWRhcndpbi14NjQiOiBbIkBuZXh0L3N3Yy1kYXJ3aW4teDY0QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi12L1lMQkhJWTEzMkNlZDNwdUJKN1lKS3cxbHFzQ3JnY05vMmFSSmxDRXlRcnJDZVJKbHZHbG5teGhQeE5RSTNLRTNOMURONXI5VFBOUHZrYTNucTVSUT09Il0sCgogICAgIkBuZXh0L3N3Yy1saW51eC1hcm02NC1nbnUiOiBbIkBuZXh0L3N3Yy1saW51eC1hcm02NC1nbnVAMTYuMi42IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1SUE92cWxZQmJjUWprejlWUVFEWjJUMmJBUklqWFpWMUtGbHQrVjJNcjZTVy9lNEk5ZmNLc2FBMGhkeWYyRkhvVGxzVjJ4bkJkNVk5MTJyUC8xQ2U2dz09Il0sCgogICAgIkBuZXh0L3N3Yy1saW51eC1hcm02NC1tdXNsIjogWyJAbmV4dC9zd2MtbGludXgtYXJtNjQtbXVzbEAxNi4yLjYiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVVSVVR1MStkTWt4SnNQRmdtK09lRXZxOXdmNXN1ancwRXZnWXk4MFRER0hUU0xUbklIZXFiMEV1OEEzc0M5NUlSZ2plalFMK2tDNG13KzR5UHhpQVhBPT0iXSwKCiAgICAiQG5leHQvc3djLWxpbnV4LXg2NC1nbnUiOiBbIkBuZXh0L3N3Yy1saW51eC14NjQtZ251QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLURPajE4Mm1QVjhHM1VrcmF5TG9SRU01WUVZSStEazV3djdPeDl4bDFmRmliQUVMRXNGRDBsRFBmSEllSUxsdXRNTWZkeWhsellQRUxHM3BldUthdXJ3PT0iXSwKCiAgICAiQG5leHQvc3djLWxpbnV4LXg2NC1tdXNsIjogWyJAbmV4dC9zd2MtbGludXgteDY0LW11c2xAMTYuMi42IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSEtRNVNQL1YvdWI3M1V2RjduL3plSmx4azJrTG10TDdXenJnNFdmbWtqbU5vczVvbkoydEt1N3laT1BkTDE4QTZTdmZuM21heDI5eW0rcnk3TmtLNGc9PSJdLAoKICAgICJAbmV4dC9zd2Mtd2luMzItYXJtNjQtbXN2YyI6IFsiQG5leHQvc3djLXdpbjMyLWFybTY0LW1zdmNAMTYuMi42IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1MWlhwVGxQeVM1djdIaFNtbnZzTEdQM2lJWWdZT0JuYzhyOEFybFQ1NXNHSFY4OWJSMkhsRGRCaldRK1BZNlNKTW1rOFR1VkdGdXhhbG5QM2svMER3Zz09Il0sCgogICAgIkBuZXh0L3N3Yy13aW4zMi14NjQtbXN2YyI6IFsiQG5leHQvc3djLXdpbjMyLXg2NC1tc3ZjQDE2LjIuNiIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLUYwKzRpMGg5SjZDNGVFM0VBUFdzb0NrN1VXL2Riek9qeXp4WTBxbkRVT1lGdTZGRm1kWjZsOTcvWGRWMy9OejNWWXlPN1VXanlFSlVYa0dxY29YZk1BPT0iXSwKCiAgICAiQG94Yy1wcm9qZWN0L3R5cGVzIjogWyJAb3hjLXByb2plY3QvdHlwZXNAMC4xMzAuMCIsICIiLCB7fSwgInNoYTUxMi1pYkQydXN4OUpSdTdmNXB1MnRNS01JNGNwQTROZ1hKUW9ZUlA0cFE3UHhtbjFsNmsvNTNxV3RRV1pheWhZeTNYNFFaa3Q5ME90K21KRWFlWG91aW82UT09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWFuZHJvaWQtYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLWFuZHJvaWQtYXJtNjRAMS4wLjEiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItZkpJM0kwcjNDM09qL3pkQkNwYUNtQlJaWWYwN3hwYXE0eUNmRERvU0ZtK2JlV056YklsMjZwdVc4UnJhVWR1Z29Kdy85NXplck5PbjZqYXNBaHpTbWc9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1kYXJ3aW4tYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLWRhcndpbi1hcm02NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLWNLbkFoV0VzVjdUUGNBLzVFQXRlRHA2S2NKWkJRMkcrQnFFN3pheU1NaTdrTXZ3UnNidjdXVDlhT25uMFdObDRTS0VJZjQzdmpTMzFpVVB1ODBuelhnPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NCI6IFsiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1ZS3JWd1FqSVJCUG8rNUcvdTAzd0dqYmR5NHE3cHl6Q2U5M0RLOVZKN3prVm1lZzhMSjdHYmdzaUhXZFI0eFNvZTRDQVhSRDdCY2pnYnRyNjRia1hOZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWZyZWVic2QteDY0IjogWyJAcm9sbGRvd24vYmluZGluZy1mcmVlYnNkLXg2NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItei9vQnNSRW80NlNzRnFCd1l0RmUwa3BKZUJpakFUNDhPL1dYTEk0c3VpQ0xCa3IwM1JUdFRKTUN6U2REZDJ6bmxoOFZKaXpMMDlYVmtRZ2s4SVpvbnc9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmQDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItaWs4cTdHTTExenh2WXhGYzJQZURjVDZUQnZoQ1FNYVV4ZnBoL001bDlzS3VUcy9TamczTCtCeXcwRjd3MFpWTEJabXgzMFArZ0cwRUN6ek4rTUZjbVE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1nbnUiOiBbIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LWFybTY0LWdudUAxLjAuMSIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItUW9TeDJFa3lycmRaNmtjeUU4c3RxWjYydDBZcmE4RnM1aWE5bE94SnJoNlRNUUpLN2dRS21zY2RUSGY3cE9YS1JFS3JWd090SmNRRzNxVlNmYzg2NkE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsQDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi11d053RnB3S2VOaVphd2ZBV0JnZzBWSXp0UFRWM2loaGgxdlYzMzRoOWl2bk5Mb3J4blFNVTZGejh3RzFaYjRRaDlMQzEvTWtjeVQzWWxEWEczUnNnZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXBwYzY0LWdudSI6IFsiQHJvbGxkb3duL2JpbmRpbmctbGludXgtcHBjNjQtZ251QDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi16WTFidWw3T1dyN0RGQmlKKyt3b2ZYdm5yOEI0NWNlM1FzUVVoS3JJaFhzeWdBaDdiVGt3eWVNMWJpMWEyZzVDL3lDL044VFp5R0RFb01mbS9sOW1wZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXMzOTB4LWdudSI6IFsiQHJvbGxkb3duL2JpbmRpbmctbGludXgtczM5MHgtZ251QDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJzMzkweCIgfSwgInNoYTUxMi0wZnJsc1QvZjRGdDZJN1NNRVNUS25GM2Nac2RpY1FuMWRDTWtGL2pUOXdETEUrZ0dvaVFmdjFubVQ5ZStzN3MvZmVrdnZ5NnRaTTJqSHZJMnRrYkpEUT09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1nbnUiOiBbIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1nbnVAMS4wLjEiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1YQUJWbUdwOVRnMFdzcFRWdndkdVRjNGZwcXk2Sm5BVXJTUWU2T3V5cUQvMDNuSTdyME85T1dVa01Jd0ZyaktBSXFvbHZxb0E0WnJKcHBnd0UwR3htdz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1tdXNsIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC14NjQtbXVzbEAxLjAuMSIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLWJWNGZ6c3d1elZjS0Q5MG8vVk02UXFLeG54bERxMGcyQklTRExOVm14cm5ocHYxRERieVBoQ0lqWWZ2ellMVitNdmtLS25RdDJRNkFPODZTRUJVTFVRPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctb3Blbmhhcm1vbnktYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLW9wZW5oYXJtb255LWFybTY0QDEuMC4xIiwgIiIsIHsgIm9zIjogIm5vbmUiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLS9NaDBaaHEzT1A3ZlZzMGtjUUhaUDZsWkV0aE1HVGFTZjhVQlFZU0ZFWkRXR1hYbEVDK25KNkVxZW5hSzJ0NExCWE1lM0ErSy9HMkJWWFhkdE9yNFBRPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctd2FzbTMyLXdhc2kiOiBbIkByb2xsZG93bi9iaW5kaW5nLXdhc20zMi13YXNpQDEuMC4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvY29yZSI6ICIxLjEwLjAiLCAiQGVtbmFwaS9ydW50aW1lIjogIjEuMTAuMCIsICJAbmFwaS1ycy93YXNtLXJ1bnRpbWUiOiAiXjEuMS40IiB9LCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItKzF4YzlYNDVsOHVmc0JBbTZHanZ4MnFEUklZOWxUVnQwY2dXTmNKKzFnZGhYdmtieGVQQTYweVJUd1NUdVhMMDlDTWh5Sm1qcFY3RTNOb3l4YnFGUVE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjIjogWyJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjQDEuMC4xIiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi0xRCtVcVpkZm51UitKeTFHZ01Kd2k4NWJENDBIMjF1Tm1PUFJXUWh3NG9SU3VvbFovQjVyaXhaNDVESzJLWE9UQ3ZtVkNlY2F1V2dFaGJ3OGJJN3RPdz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLXdpbjMyLXg2NC1tc3ZjIjogWyJAcm9sbGRvd24vYmluZGluZy13aW4zMi14NjQtbXN2Y0AxLjAuMSIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLUlOQXljYVd1aGxPSzN3azRtUkhHc2Rnd1lXbWQ5Y0NoZFBkRTlid1dteTZybjlWcVZOWU5GR2hPZFhyb2ZYVXh3SEluY1NpUE5iOHRObThrbkRWSWVRPT0iXSwKCiAgICAiQHJvbGxkb3duL3BsdWdpbnV0aWxzIjogWyJAcm9sbGRvd24vcGx1Z2ludXRpbHNAMS4wLjEiLCAiIiwge30sICJzaGE1MTItMmo5Ykd0NUpoOGhqK3ZQdGd6UHRsNzJqMHlSeEhBeXVtb282VE5mQWpzTEIwNFV0cFN2UGJQY0RjQk14ejduKzlDWUIwYzFHeFFGeFlSZzJqaW1xR3c9PSJdLAoKICAgICJAc3RhbmRhcmQtc2NoZW1hL3NwZWMiOiBbIkBzdGFuZGFyZC1zY2hlbWEvc3BlY0AxLjEuMCIsICIiLCB7fSwgInNoYTUxMi1sMmFGeTVqQUxobmlHNUhncXJENmpYTGkvclVXckt2cU4vcUp4NnlvSnNnS2hibFZkK2lxcVU0UkNYYXZtL2pQaXR5RG81VEN2S01ucGpLbk9yaXkwdz09Il0sCgogICAgIkBzd2MvaGVscGVycyI6IFsiQHN3Yy9oZWxwZXJzQDAuNS4xNSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi44LjAiIH0gfSwgInNoYTUxMi1KUTVUdU1pNDVPd2k0L0JJTUFKQm9TUW9PSnUxMm9Pay9nQURxbGNVTDlKRWRIQjh2eWpVU3N4cWVOWG5tWEhqWUtNaTJXY1l0ZXpHRUVocVVJL0UyZz09Il0sCgogICAgIkB0YWJieV9haS9oaWpyaS1jb252ZXJ0ZXIiOiBbIkB0YWJieV9haS9oaWpyaS1jb252ZXJ0ZXJAMS4wLjUiLCAiIiwge30sICJzaGE1MTItcjViQ2xLcmNJdXNEb28wNDlkU0w4Q2F3bkhSNm1SZER3aGxRdUlnWlJOdHk2OHEweDhrM0xmMUJ0UEFNeFJmL0dnbkhCbklPNHVqZDMrR1FkTFd6eFE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvbm9kZSI6IFsiQHRhaWx3aW5kY3NzL25vZGVANC4zLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvcmVtYXBwaW5nIjogIl4yLjMuNSIsICJlbmhhbmNlZC1yZXNvbHZlIjogIl41LjIxLjAiLCAiaml0aSI6ICJeMi42LjEiLCAibGlnaHRuaW5nY3NzIjogIjEuMzIuMCIsICJtYWdpYy1zdHJpbmciOiAiXjAuMzAuMjEiLCAic291cmNlLW1hcC1qcyI6ICJeMS4yLjEiLCAidGFpbHdpbmRjc3MiOiAiNC4zLjAiIH0gfSwgInNoYTUxMi1hRmI0Z1VoRk9nZGg5QVhvNEl6QkVPekJra0F4bTlWaWd3REpuTUlZdjNsY2ZYQ0pWZXNOZmJFYUJsNEJOZ1ZSeWlkOTJBbWR2aXF3QlVCUktTZVkzZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZSI6IFsiQHRhaWx3aW5kY3NzL294aWRlQDQuMy4wIiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQHRhaWx3aW5kY3NzL294aWRlLWFuZHJvaWQtYXJtNjQiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtZGFyd2luLXg2NCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtZnJlZWJzZC14NjQiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybS1nbnVlYWJpaGYiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybTY0LWdudSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtbXVzbCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LWdudSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LW11c2wiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLXdhc20zMi13YXNpIjogIjQuMy4wIiwgIkB0YWlsd2luZGNzcy9veGlkZS13aW4zMi1hcm02NC1tc3ZjIjogIjQuMy4wIiwgIkB0YWlsd2luZGNzcy9veGlkZS13aW4zMi14NjQtbXN2YyI6ICI0LjMuMCIgfSB9LCAic2hhNTEyLUY3SFpHQmVOOUkwL0F1dUpTNVB3Y0Q4eGF5eDVyaTVHaGpZVURCRVZZVWtleHlBL2dpd2JETmpSVnJ4U2V6RTNUMjUwT1UySy93cC9sdFd4M1VPZWZnPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWFuZHJvaWQtYXJtNjQiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1hbmRyb2lkLWFybTY0QDQuMy4wIiwgIiIsIHsgIm9zIjogImFuZHJvaWQiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVRKUGlxNjd0S2xMdU9iUDZSa3d2VkdEb3hDTUJWdERnS2tMZmEvdXlqNy9GeXh2UXdIUytVT25WclhYZ2JFc2ZVYU1naVZ2QzRLYkpuUnIyNmhvNE5nPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NCI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NEA0LjMuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLW9NTi9XWlJiK1NPMzdCbVVFbEVnZUVXdVU4RS9IWFJraU9EeEp4TGUxVVRIVlhMcmRWU2dmYUpWN3BTbGhSR01TT2lYTHV4VElqZnNGM3dZdno4Y2dRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi14NjQiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1kYXJ3aW4teDY0QDQuMy4wIiwgIiIsIHsgIm9zIjogImRhcndpbiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLU42Q1VtdTRhNmJLVkFEZnc3N3AraXc2WWQ5UTNPQmhlMHZlYURYK1FhemZ1VllsUXNIZkRneEJyc2pRL0lXK3p5d0w4bVRyTmQwU2RKVC96Z3R2TWRBPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWZyZWVic2QteDY0IjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtZnJlZWJzZC14NjRANC4zLjAiLCAiIiwgeyAib3MiOiAiZnJlZWJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLXpETDVoQmtRZEg1QzZNcHFiSzNnUUFnUDgwdHNNd1NJMjZ2ak96akp0TkNNVW8wbEZnT0l0ekhLQkl1cE9aTlF4dDNvdVBIN1JQaHZOaGlUZkNlNUNRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybS1nbnVlYWJpaGYiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC1hcm0tZ251ZWFiaWhmQDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItUjA2SGROaTdBN09Fb01zZjZkNHRqWjcxUkNXblpRUEhqMm1ub3RTRlVSak5MZEJDK2NJZ1hRN2w4MUNxZW9pUWZ0amY2T09ibHhYTUluTWdOMlZ6TUE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtZ251IjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtZ251QDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1xVEpIRUxYOGpldGpoUlFIQ0xpbGtWTG15YnB6TlFBdGFJL2dhb1ZvaWRuL3VmYk5EYkFvOEtsSzJKK3lQb2M4d1F4dkR4Q21oLzVscjhuQzErbFRiZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC1hcm02NC1tdXNsIjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtbXVzbEA0LjMuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItWjZzdWtpUXNuZ25XTytsMzlYNHBQYmlXVDgxSUMrUExLRitQSHhJbHlaYkdOYjlNT0RmWWxYRVZsRnZlajVCT1pJbldYMDFrVnl6ZUx2SHNYaGZjelE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LWdudSI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LXg2NC1nbnVANC4zLjAiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1EUk5kUVJwU0d6UkdmQVJWdVZreHZNOFExMm5oMTlsNEJGL0c3ekdBMW9lKzl3Y0M2c2FGQkhUSVNycEljS3poaVh0U3JsU3JsdUNmdk11bGVkb0NUUT09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC14NjQtbXVzbCI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LXg2NC1tdXNsQDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItWjBJQURiRG84Ymg2STdoMklRTXg2MDFBZFhCTGZGcEVkVW90ZnQ4NmV2ZC84WlBmbFplOUNPUE84UTF2dytwZkxXSVVvOXpOL0pHWnZ3dUFKcWR1cWc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kiOiBbIkB0YWlsd2luZGNzcy9veGlkZS13YXNtMzItd2FzaUA0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAZW1uYXBpL2NvcmUiOiAiXjEuMTAuMCIsICJAZW1uYXBpL3J1bnRpbWUiOiAiXjEuMTAuMCIsICJAZW1uYXBpL3dhc2ktdGhyZWFkcyI6ICJeMS4yLjEiLCAiQG5hcGktcnMvd2FzbS1ydW50aW1lIjogIl4xLjEuNCIsICJAdHlieXMvd2FzbS11dGlsIjogIl4wLjEwLjEiLCAidHNsaWIiOiAiXjIuOC4xIiB9LCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItSE5aR09VeEVtRWxrc1lSN1M2c0M1alRlTkdwb2JBc3k5dTdHdTBBc2tKOC8yMEZSOUdxZWJVeUIrSEJjVS9heDZCSHVpdUppK09kYTRCK1lYNkgxeUE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2luMzItYXJtNjQtbXN2YyI6IFsiQHRhaWx3aW5kY3NzL294aWRlLXdpbjMyLWFybTY0LW1zdmNANC4zLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVBlK1JQVlRpMVQrcXltdXVScGNkdndTVlpqbmxsL2Y3bjhnQnhNTWgzeExUY3RNREtxcGRmR2ltYk15aW9xdExoVVlaeGRKOXdHTmhWN01LSHZnWnNRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLXdpbjMyLXg2NC1tc3ZjIjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtd2luMzIteDY0LW1zdmNANC4zLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1NdnJmMmtYVy95ZVcvT1RlelpsQ0dPaXJYUmNVdUxJQngvNVkxMkJhUE03d0pvcnlHNmRmUy9OSkw4YUJQcXRURXgvVm00VDR2S3pGVWNLRFQrVEtVQT09Il0sCgogICAgIkB0YWlsd2luZGNzcy9wb3N0Y3NzIjogWyJAdGFpbHdpbmRjc3MvcG9zdGNzc0A0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYWxsb2MvcXVpY2stbHJ1IjogIl41LjIuMCIsICJAdGFpbHdpbmRjc3Mvbm9kZSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUiOiAiNC4zLjAiLCAicG9zdGNzcyI6ICJeOC41LjEwIiwgInRhaWx3aW5kY3NzIjogIjQuMy4wIiB9IH0sICJzaGE1MTItSm0wNVRqeCs5eUNMR3Y1cXcxYys4NFBzZHM4TW55ckVRWUNCK0ZGazJsZ0dpVWpsUnFkeGtlNG1WVHVZcmoyeG5WWnFLaW0yQXByNXlTdVFSWUF3L3c9PSJdLAoKICAgICJAdHlieXMvd2FzbS11dGlsIjogWyJAdHlieXMvd2FzbS11dGlsQDAuMTAuMiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi40LjAiIH0gfSwgInNoYTUxMi1Sb0J2SjJYMHd1S2xXRklqcndmZkd3MUlxWkhLUXF6SWNoS2FhZFpaZm5OcHNBWXAybU0waDM2SnRQQ2pOREFIR2dZZXovMTV1TUJwZkd3Y2hoaU1nZz09Il0sCgogICAgIkB0eXBlcy9jaGFpIjogWyJAdHlwZXMvY2hhaUA1LjIuMyIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAdHlwZXMvZGVlcC1lcWwiOiAiKiIsICJhc3NlcnRpb24tZXJyb3IiOiAiXjIuMC4xIiB9IH0sICJzaGE1MTItTXc1NThvZUE5ZkZidjY1L3k0bUh0WERzOWJQbkZNWkFML2p4ZFBGVXBPSEhJWFg5MW1jZ0VIYlM1TGFocitwd1pGUjhBN0dRbGVSV2VJNmNHRkMyVUE9PSJdLAoKICAgICJAdHlwZXMvZGVlcC1lcWwiOiBbIkB0eXBlcy9kZWVwLWVxbEA0LjAuMiIsICIiLCB7fSwgInNoYTUxMi1jOWg5ZFZWTWlnTVBjNGJ3VHZDNWR4cXRxSlp3UVBlUHNXalBscFNPbm9qYm9yNnBHcWRrNTQxbGZBN0FxRlFyNXBCMUJSZHEwanVZOWRiODFCd3lGdz09Il0sCgogICAgIkB0eXBlcy9lc3RyZWUiOiBbIkB0eXBlcy9lc3RyZWVAMS4wLjkiLCAiIiwge30sICJzaGE1MTItR2hkUGd5MWVsNC9JbVAwNVgwNVV3NGN3Mi9NOTNCQ1VtbkV2V1pOU3RsQ3pFS01FNEZraytZcG9BNU9pSE5RbW9TN0NhZmI4WGEzUHlhOG0xUXJ6ZWc9PSJdLAoKICAgICJAdHlwZXMvbm9kZSI6IFsiQHR5cGVzL25vZGVAMjIuMTkuMTkiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidW5kaWNpLXR5cGVzIjogIn42LjIxLjAiIH0gfSwgInNoYTUxMi1keWgveE8yRmg1YllyZldhYXFHclJRUUdrTmRtWXc2QW1hQVV2WWVVTU5UV1F0dmI3OTZpa0xkbVRjaFJtT2xPaUlKMVREWGZXZ1Z4MVFrVWxRNkhldz09Il0sCgogICAgIkB0eXBlcy9yZWFjdCI6IFsiQHR5cGVzL3JlYWN0QDE5LjIuMTUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiY3NzdHlwZSI6ICJeMy4yLjIiIH0gfSwgInNoYTUxMi1lUndjR05IdmUrRThxdEVRU1NSbDZ1cmgrckZvcDR2OGdtNk84ckd2MjVDb2RidkZkTGpBMXZWUTFLa2lGRTB3MFVQT25iOHREaUZLTDVscDBydFk1UT09Il0sCgogICAgIkB0eXBlcy9yZWFjdC1kb20iOiBbIkB0eXBlcy9yZWFjdC1kb21AMTkuMi4zIiwgIiIsIHsgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJAdHlwZXMvcmVhY3QiOiAiXjE5LjIuMCIgfSB9LCAic2hhNTEyLWpwMkwvZVk2Zm4rS2dWVlFBT3FZSXRiRjBWWS9ZQXBlNU16MkYwYXlrU084Z3gzMWJZQ1p5dlNlWXhDSEt2ekhHNWVaamMrenlhUzVCckJXeWEyK2tRPT0iXSwKCiAgICAiQHZpdGVzdC9leHBlY3QiOiBbIkB2aXRlc3QvZXhwZWN0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBzdGFuZGFyZC1zY2hlbWEvc3BlYyI6ICJeMS4xLjAiLCAiQHR5cGVzL2NoYWkiOiAiXjUuMi4yIiwgIkB2aXRlc3Qvc3B5IjogIjQuMS42IiwgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAiY2hhaSI6ICJeNi4yLjIiLCAidGlueXJhaW5ib3ciOiAiXjMuMS4wIiB9IH0sICJzaGE1MTItN0VIRHF1UHRoQUxTVjBqaGhqZ0VXOEZYYXZpTXg3clNxdThXNm9xQ29BdU9oS292ODE0UDk5UURWMXB4TUEzUVB2MjFZdWR2Sm5nSWhqck5JNG9wTGc9PSJdLAoKICAgICJAdml0ZXN0L21vY2tlciI6IFsiQHZpdGVzdC9tb2NrZXJANC4xLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHZpdGVzdC9zcHkiOiAiNC4xLjYiLCAiZXN0cmVlLXdhbGtlciI6ICJeMy4wLjMiLCAibWFnaWMtc3RyaW5nIjogIl4wLjMwLjIxIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIm1zdyI6ICJeMi40LjkiLCAidml0ZSI6ICJeNi4wLjAgfHwgXjcuMC4wIHx8IF44LjAuMCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIm1zdyIsICJ2aXRlIl0gfSwgInNoYTUxMi1NQ0ZjNjNjek1qRUluT2xjWTJjcFFDdkNOK0tnYkFuKzYweHU5Y01nUDRzS2FMQzVKTkFLdzdKSDhRZEFub0FDODhoVzFJaVNOWitHZ1ZYbE4xVWNNUT09Il0sCgogICAgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6IFsiQHZpdGVzdC9wcmV0dHktZm9ybWF0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRpbnlyYWluYm93IjogIl4zLjEuMCIgfSB9LCAic2hhNTEyLWg1U3hEL0l6TmhaWW5yU1pSc1VaUUlDK3ZEMEdZOGNVdnEwaXdzbWtGS2l4UkNLTExXcUNYYS9GSVE0UzFSK3NJK1BHb29qa0hzZE5yYlppTTlRcGd3PT0iXSwKCiAgICAiQHZpdGVzdC9ydW5uZXIiOiBbIkB2aXRlc3QvcnVubmVyQDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAicGF0aGUiOiAiXjIuMC4zIiB9IH0sICJzaGE1MTItbk9QQ21uMit5RDBaTm1LZHNYR3YvVXhNTVdiTXVLZUQ2R3lZbmNOd2RrWUR4cFF2clBTS1lqMnJXdURqQzJZNGI2dzZoamlwNWRCS0Z6RVV1WmUzdkE9PSJdLAoKICAgICJAdml0ZXN0L3NuYXBzaG90IjogWyJAdml0ZXN0L3NuYXBzaG90QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6ICI0LjEuNiIsICJAdml0ZXN0L3V0aWxzIjogIjQuMS42IiwgIm1hZ2ljLXN0cmluZyI6ICJeMC4zMC4yMSIsICJwYXRoZSI6ICJeMi4wLjMiIH0gfSwgInNoYTUxMi1ZaHNkRTZ4QVZmVERtemp4TDJaRFV2amorWnNneU9LZStUZFF6cWtENzJ3SU9tSGthOE51R1E2TnBUTlp2OUQyWjYzZmJ3V0tKUGVWcEV3NEVRZ1l4dz09Il0sCgogICAgIkB2aXRlc3Qvc3B5IjogWyJAdml0ZXN0L3NweUA0LjEuNiIsICIiLCB7fSwgInNoYTUxMi1KRkt4TXg2dWRod0toL0xkbzI3MGUxN1FYNzEwdmd1bk1rdVBBdlhqSFN2QzZvcUxXQUhoVmhqZy9JNzFxMHUwQ0JTRXJJT0RWMUtqdjBGUU5TV2pkZz09Il0sCgogICAgIkB2aXRlc3QvdXRpbHMiOiBbIkB2aXRlc3QvdXRpbHNANC4xLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHZpdGVzdC9wcmV0dHktZm9ybWF0IjogIjQuMS42IiwgImNvbnZlcnQtc291cmNlLW1hcCI6ICJeMi4wLjAiLCAidGlueXJhaW5ib3ciOiAiXjMuMS4wIiB9IH0sICJzaGE1MTItRnhJWStVODFSM0xHS0N4YUhIRlJRNStnNi9pUmdHTG1lSFdkcDJBbWo0bGpRUnJFSVdIbVp5RGZEWUJSWmxweXFBN3FLeHRTOUREMWRoazhSblJJVlE9PSJdLAoKICAgICJhY29ybiI6IFsiYWNvcm5AOC4xNi4wIiwgIiIsIHsgImJpbiI6IHsgImFjb3JuIjogImJpbi9hY29ybiIgfSB9LCAic2hhNTEyLVVWSnlFOU10dE9zQlFJREt3MXNrYjluQXdRdVI1d3VHRDMrODJLNkpnSmxtL1krS0k5Mm9Oc01OR1pDWWREc1Z0UkhTYWswcGNWNURubzUrNGpoOXN3PT0iXSwKCiAgICAiYW5zaS1yZWdleCI6IFsiYW5zaS1yZWdleEA1LjAuMSIsICIiLCB7fSwgInNoYTUxMi1xdUpRWGxUU1VHTDJMSDlTVVhvOFZ3c1k0c29hbmhnbzZMTlNtODRFMUxCY0U4czNPMHdwZGlSenlSOXovWlpKTWxNV3YzN3FPT2I5cGRKbE1VRUtGUT09Il0sCgogICAgImFuc2ktc3R5bGVzIjogWyJhbnNpLXN0eWxlc0A0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjb2xvci1jb252ZXJ0IjogIl4yLjAuMSIgfSB9LCAic2hhNTEyLXpiQjlyQ0pBVDFyYmppVkRiMmhxS0ZITllMeGd0azhOVVJ4WjNJWndEM0Y2TnR4YlhaUUNublNpMUxreCtJRG9oZFBsRnAyMjJ3VkFMSWhlWkpRU0VnPT0iXSwKCiAgICAiYXNzZXJ0aW9uLWVycm9yIjogWyJhc3NlcnRpb24tZXJyb3JAMi4wLjEiLCAiIiwge30sICJzaGE1MTItSXppOFJRY2ZmcUNlTlZnRmlnS2xpMXNza2xJYnBIbkNZYzZBa25YR1lvQjZnckpxeWVieTdqdjEySlVRZ21UQW5JRG5iY2sxdXhrc1Q0ZHpOM1BXQkE9PSJdLAoKICAgICJiYXNlbGluZS1icm93c2VyLW1hcHBpbmciOiBbImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZ0AyLjEwLjMxIiwgIiIsIHsgImJpbiI6IHsgImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZyI6ICJkaXN0L2NsaS5janMiIH0gfSwgInNoYTUxMi1NdWpZTzNlUDcydXZtU0UwaTR3bHRzb2RSZklwWkFUUDNqdnpSTlJHR3hneklkN2FWb2NWSkpWM25mMDFxbnp6S0ZHeFFWQzlicFd4bDVjanhUci83UT09Il0sCgogICAgImJ1ZmZlci1mcm9tIjogWyJidWZmZXItZnJvbUAxLjEuMiIsICIiLCB7fSwgInNoYTUxMi1FK1hRQ1J3U2JhYWlDaHR2Nms2RHdnYytieCtCczZ2dUtKSEhsNWtveC9CYUtiaGlYenFRT3dLNGNPMjJ5RWxHcDJPQ21qd1ZoVDNIbXhneVBHbkpmUT09Il0sCgogICAgImNhbml1c2UtbGl0ZSI6IFsiY2FuaXVzZS1saXRlQDEuMC4zMDAwMTc5MyIsICIiLCB7fSwgInNoYTUxMi1pd1NzWVdhQ09vaDI2Y1Y4TndOUlZpSGxyZlV2WXNIRGZSVmNidG13MEtnNlBKSVpaWHdNa2oxNDQyRllMQkdrZVVmMWp1QXNVM0RUZnhXNTc5bXJQQT09Il0sCgogICAgImNoYWkiOiBbImNoYWlANi4yLjIiLCAiIiwge30sICJzaGE1MTItTlVQUmx1T2ZPaVRLQkt2V1B0U0Q0UGhGdldDcU9pMEJHU3ROV3M1N1g5anM3WEdUcHJTbUZvejVGMHRXaFI0V1BqTmVSOWpYcWRDNy9VcFNKVG5sUmc9PSJdLAoKICAgICJjaGFsayI6IFsiY2hhbGtANC4xLjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiYW5zaS1zdHlsZXMiOiAiXjQuMS4wIiwgInN1cHBvcnRzLWNvbG9yIjogIl43LjEuMCIgfSB9LCAic2hhNTEyLW9LbmJoRnlSSVhwVXVlejhpQk1teUVhNG5iajRJT1F5dWhjL3d5OWtZNy9XVlBjd0lPOVZBNjY4UHU4UmtPNyswRzc2U0xST2V5dzlDcFEwNjFpNG1BPT0iXSwKCiAgICAiY2xpZW50LW9ubHkiOiBbImNsaWVudC1vbmx5QDAuMC4xIiwgIiIsIHt9LCAic2hhNTEyLUlWM091MGpTTXpacmQzcFo0OG5Ma1Q5REE3QWcxcG5QemFpUWhwVzdjM1JiY3FxenZ6elZ1K0w4Z2ZxTXAvOElNMk1RdFNpcWFDeHJyY2Z1OEk4ck1BPT0iXSwKCiAgICAiY2xpdWkiOiBbImNsaXVpQDguMC4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInN0cmluZy13aWR0aCI6ICJeNC4yLjAiLCAic3RyaXAtYW5zaSI6ICJeNi4wLjEiLCAid3JhcC1hbnNpIjogIl43LjAuMCIgfSB9LCAic2hhNTEyLUJTZU5ueXVzNzVDNC8vTlE5Z1F0MS9jc1RYeW8vOFNiK2FmTEFrekFwdEZ1TXNvZDlIRm9rR051ZFpwaS9vUVY3M2huVksrc1IrNVBWUk1kK0RyN1lRPT0iXSwKCiAgICAiY2xzeCI6IFsiY2xzeEAyLjEuMSIsICIiLCB7fSwgInNoYTUxMi1lWW0wUVdCdFVyQldaV0cwZDM4Nk9HQXcxNlo5OTVQaU9WbzJCN2JqV1NiSGVkR2w1ZTBaV2FxNjVrT0dnVVNOZXNFSURrQjlJU2JUZy9KSzlkaENaQT09Il0sCgogICAgImNvbG9yLWNvbnZlcnQiOiBbImNvbG9yLWNvbnZlcnRAMi4wLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiY29sb3ItbmFtZSI6ICJ+MS4xLjQiIH0gfSwgInNoYTUxMi1SUkVDUHNqN2l1L3hiNW9LWWNzRkhTcHBGTm5zai81Mk9WVFJLYjR6UDVvblh3VkYzelZtbVRvTmNPZkdDK0NSRHBmSy9VNTg0Zk1nMzhaSENhRWxLUT09Il0sCgogICAgImNvbG9yLW5hbWUiOiBbImNvbG9yLW5hbWVAMS4xLjQiLCAiIiwge30sICJzaGE1MTItZE95KzNBdVczYTJ3TmJaSEl1TVpwVGNnakd1TFUvdUJML3ViY1pGOU9YYkRvOGZmNE84eVZwNUJmMGVmUzh1RW9ZbzVxNEZ4N2RZOU9nUUdYZ0FzUUE9PSJdLAoKICAgICJjb21tYW5kZXIiOiBbImNvbW1hbmRlckAyLjIwLjMiLCAiIiwge30sICJzaGE1MTItR3BWa21NOHZGMnZRVWtqMkx2Wm1EMzVKeGVKT0xDd0o5Y1VrdWd5azJudWhidjMrbUp2cExZWXQrMCtVU014RStvaitleS9sSkVuaFp3NzV4L09NY1E9PSJdLAoKICAgICJjb25jdXJyZW50bHkiOiBbImNvbmN1cnJlbnRseUA5LjIuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjaGFsayI6ICI0LjEuMiIsICJyeGpzIjogIjcuOC4yIiwgInNoZWxsLXF1b3RlIjogIjEuOC4zIiwgInN1cHBvcnRzLWNvbG9yIjogIjguMS4xIiwgInRyZWUta2lsbCI6ICIxLjIuMiIsICJ5YXJncyI6ICIxNy43LjIiIH0sICJiaW4iOiB7ICJjb25jIjogImRpc3QvYmluL2NvbmN1cnJlbnRseS5qcyIsICJjb25jdXJyZW50bHkiOiAiZGlzdC9iaW4vY29uY3VycmVudGx5LmpzIiB9IH0sICJzaGE1MTItZnNmck8wTXhWNjRabm95OC9sMXZWSWpqSGEyOVNaeXlxUGdRQndoaURjYVc4d0pjMlczWFdWT0d4NE0zb0pCbnYvemRVWklJcDFnRGVTOThHelA4Tmc9PSJdLAoKICAgICJjb252ZXJ0LXNvdXJjZS1tYXAiOiBbImNvbnZlcnQtc291cmNlLW1hcEAyLjAuMCIsICIiLCB7fSwgInNoYTUxMi1LdnA0NTlIclYyRkVKMUNBc2kxS3UrTVkza2FzSDE5VEZ5a1R6MnhXbU1lcTZiazJOVTNYWHZmSitRNjFtMHhrdFd3dCsxSFNZZjNKWnNUbXMzYVJKZz09Il0sCgogICAgImNzc3R5cGUiOiBbImNzc3R5cGVAMy4yLjMiLCAiIiwge30sICJzaGE1MTItejFIR0tjWXkyeEE4QUdRZndybjBQQXkrUEI3WC9HU2ozVVZKVzlxS3luNDN4V2ErZ2w1blhtVTRxcUxNUnpXVkxGQzhLdXNVWDhULzBrQ2lPWXBBSVE9PSJdLAoKICAgICJkYXRlLWZucyI6IFsiZGF0ZS1mbnNANC4yLjEiLCAiIiwge30sICJzaGE1MTItMzdSaFNkeGFHMXN1ZW42VkRDemE2ck5yUWZvb3lRaDU3SEZWUHdRR0VxMlFXbGlWTHpQUVo4T2EwMTd3ZU91K0haQ256STdOM1BmL3d5b0JLZkVxckE9PSJdLAoKICAgICJkYXRlLWZucy1qYWxhbGkiOiBbImRhdGUtZm5zLWphbGFsaUA0LjEuMC0wIiwgIiIsIHt9LCAic2hhNTEyLWhUSVAveit0K3FLd0JEY21tc25taldUZHV4Q2crNUtmZHFXUXZiMlgvOEM5K2tuWVk2ZXBOL3BmeGREdXlWbFNWZUZ6MHNNNWVFZndJVVE3MFU0Y2tnPT0iXSwKCiAgICAiZGV0ZWN0LWxpYmMiOiBbImRldGVjdC1saWJjQDIuMS4yIiwgIiIsIHt9LCAic2hhNTEyLUJ0ajJCT09PODNvM1d5SDU5ZThNZ1hzeEVRVmNhcmtVT3BFWXJ1YkIwdXJ3bk4xMHlRMzY0cnNpQnlVMTFuWmxxV1labTA1aS9vZjdpbzRtemloQnRRPT0iXSwKCiAgICAiZW1vamktcmVnZXgiOiBbImVtb2ppLXJlZ2V4QDguMC4wIiwgIiIsIHt9LCAic2hhNTEyLU1Tall6Y1dOT0EwZXdBSHB6ME14cFlGdndnNnlqeTFORzN4dGVvcXo2NDRWQ28vUlBnbnIxL0dHdCtpYzNpSlR6UThFdTNUZE0xNFNhd25WVW1HRTZBPT0iXSwKCiAgICAiZW5oYW5jZWQtcmVzb2x2ZSI6IFsiZW5oYW5jZWQtcmVzb2x2ZUA1LjIxLjUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZ3JhY2VmdWwtZnMiOiAiXjQuMi40IiwgInRhcGFibGUiOiAiXjIuMy4zIiB9IH0sICJzaGE1MTItbUxDTmJyUWxpMTFLMXlTVW11TnQ0WlVCM09wR0lEcTRxMnZUQlRmNWNMMmxwc1JqSTlRS3FTRDBuZGpXOEZ5dmNXL0pqNDZnTWU5c3l5SEFzdk1hL0E9PSJdLAoKICAgICJlcy1tb2R1bGUtbGV4ZXIiOiBbImVzLW1vZHVsZS1sZXhlckAyLjEuMCIsICIiLCB7fSwgInNoYTUxMi1uMjd6VFlNall1MWFqNE1qQ1d6U1A3RzlyNzV1dHNhb2M4bTYxd2VLK1c4Sk1CR0dReWJkNDNHc3RDWFozV05tU0Z0R1Q5d2k1OXFRVFc2bWhUUjVMUT09Il0sCgogICAgImVzYnVpbGQiOiBbImVzYnVpbGRAMC4yNS40IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGVzYnVpbGQvYWl4LXBwYzY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9hbmRyb2lkLWFybSI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvYW5kcm9pZC1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvYW5kcm9pZC14NjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2Rhcndpbi1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZGFyd2luLXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZnJlZWJzZC1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZnJlZWJzZC14NjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWFybSI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtYXJtNjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWlhMzIiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWxvb25nNjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LW1pcHM2NGVsIjogIjAuMjUuNCIsICJAZXNidWlsZC9saW51eC1wcGM2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtcmlzY3Y2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtczM5MHgiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbmV0YnNkLWFybTY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9uZXRic2QteDY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9vcGVuYnNkLWFybTY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9vcGVuYnNkLXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvc3Vub3MteDY0IjogIjAuMjUuNCIsICJAZXNidWlsZC93aW4zMi1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvd2luMzItaWEzMiI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvd2luMzIteDY0IjogIjAuMjUuNCIgfSwgImJpbiI6IHsgImVzYnVpbGQiOiAiYmluL2VzYnVpbGQiIH0gfSwgInNoYTUxMi04cGdqTFVjVWpjZ0RnKzJRNE5ZWG5QYm8vdm5jQVk0VW15YUNtMGpaZXZFUnFDSFpJYVd3ZEpIa2Y4WFF0dTRBeFNLQ2R2clViVDBYVXIxSWRaekk4UT09Il0sCgogICAgImVzY2FsYWRlIjogWyJlc2NhbGFkZUAzLjIuMCIsICIiLCB7fSwgInNoYTUxMi1XVWoycWx4YVF0TzRnNlBxNWMyOUdUY1dHRHlkOGl0TDh6VGxpcGdFQ3ozSmVzQWlpT0tvdGQ4SlU2b3RCM1BBQ2dHNnhrSlV5Vmhib01TK2JqZS9qQT09Il0sCgogICAgImVzdHJlZS13YWxrZXIiOiBbImVzdHJlZS13YWxrZXJAMy4wLjMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL2VzdHJlZSI6ICJeMS4wLjAiIH0gfSwgInNoYTUxMi03UlVLZlhnU01Na3p0Nlp1WG1xYXBPdXJMR1BQZmdqNmw5dVJaN2xSR29sdmsweTJ5b2NjMzVMZGN4S0M1UFFaZG4yRE1xaW9BUTJOb1djclRLbW02Zz09Il0sCgogICAgImV4cGVjdC10eXBlIjogWyJleHBlY3QtdHlwZUAxLjMuMCIsICIiLCB7fSwgInNoYTUxMi1rbnZ5ZWF1WWhxak9ZdlE2Nk16blNNczgzd21IckN5Y05FTjZBbysyQWVZRWZ4VUlrdWlWeGRFYTFxbEdFUEsrV2UzbjBUSGlEY2lZU3NDY2dXL0RvQT09Il0sCgogICAgImZkaXIiOiBbImZkaXJANi41LjAiLCAiIiwgeyAicGVlckRlcGVuZGVuY2llcyI6IHsgInBpY29tYXRjaCI6ICJeMyB8fCBeNCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbInBpY29tYXRjaCJdIH0sICJzaGE1MTItdEliWXRaYnVjT3MwQlJHcVBKa3NoSlVZZEwrU0RIN2RWTThnankrRVJwM1dBVWpMRUZKRSswMmthbnlIdHdqV09ud3JLWUJpd0FtTTBwNGtMSkFuWGc9PSJdLAoKICAgICJmc2V2ZW50cyI6IFsiZnNldmVudHNAMi4zLjMiLCAiIiwgeyAib3MiOiAiZGFyd2luIiB9LCAic2hhNTEyLTV4b0RmWCtmTDdmYUFUbmFnbVdQcGJGdHdoL1I3N1dtTU1xcUhHUzY1QzN2dkIwWUhyZ0YrQjFZbVozNDQxdE1qNW42M2swMjEyWE5vSnd6bGhmZlF3PT0iXSwKCiAgICAiZ2V0LWNhbGxlci1maWxlIjogWyJnZXQtY2FsbGVyLWZpbGVAMi4wLjUiLCAiIiwge30sICJzaGE1MTItRHlGUDNCTS8zWUhUUU9DVUwvdzBPWkhSMGxwS2VHcnhvdGNIV2NxTkVkbmx0cUZ3WFZmaEVCUTk0ZUlvMzRBZlFwbzByR2tpNGN5SWlmdFkwNmgyRmc9PSJdLAoKICAgICJncmFjZWZ1bC1mcyI6IFsiZ3JhY2VmdWwtZnNANC4yLjExIiwgIiIsIHt9LCAic2hhNTEyLVJiSjUvam1GY05OQ2NEVjVvOWVUbkJMSi9Ic3pXVjBQNzNiYytGZjRuUy9ySmorWWFTNklHeWlPTDBWb0JZWCtsMVdybDNrNjNoL0tySCtuaEowWHZRPT0iXSwKCiAgICAiaGFzLWZsYWciOiBbImhhcy1mbGFnQDQuMC4wIiwgIiIsIHt9LCAic2hhNTEyLUV5a0pUL1ExS2pUV2N0cHBnSUFnZlNPMHRLVnVaVWpoZ01yMTdrcVR1bU1sNkFmdjNFSVNsZVU3cVpVem9YREZUQUhUREM0Tk9vRy9aeFUzRXZsTVBRPT0iXSwKCiAgICAiaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQiOiBbImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50QDMuMC4wIiwgIiIsIHt9LCAic2hhNTEyLXp5bW01K3Urc0NzU1d5RDlxTmFlalYzREZ2aENLY2xLZGl6WWFKVXVIQTgzUkxqYjduU3VHbmRkQ0hHdjBoaytLWTdCTUFsc1dlSzRVZWc2RVY2WFFnPT0iXSwKCiAgICAiaml0aSI6IFsiaml0aUAyLjcuMCIsICIiLCB7ICJiaW4iOiB7ICJqaXRpIjogImxpYi9qaXRpLWNsaS5tanMiIH0gfSwgInNoYTUxMi1BQy83Sm9mSnZaR3JybmVXTmFFbkplT0xVeCtKbEd0N3ROYTB3WmlSUFQ0TVkxd21mS2p0Mis2TzJwMnV6Mitza2xsOE9aWm1KTU5xZWtlN2tLYk5nUT09Il0sCgogICAgImxpYnBob25lbnVtYmVyLWpzIjogWyJsaWJwaG9uZW51bWJlci1qc0AxLjEyLjQxIiwgIiIsIHt9LCAic2hhNTEyLWxzbU1tR1hCeFhJSy9WTUxFajBrTDZNdFVzMWtCR2oxblRDemk2emdRb0cxREV3cXd0MkRReUh4Y0x5a2NlSXhBbmZFM2h5YTdOdUloNlBwQzZTM2ZBPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzIjogWyJsaWdodG5pbmdjc3NAMS4zMi4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImRldGVjdC1saWJjIjogIl4yLjAuMyIgfSwgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAibGlnaHRuaW5nY3NzLWFuZHJvaWQtYXJtNjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1kYXJ3aW4tYXJtNjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1kYXJ3aW4teDY0IjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtZnJlZWJzZC14NjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1saW51eC1hcm0tZ251ZWFiaWhmIjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251IjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtbXVzbCI6ICIxLjMyLjAiLCAibGlnaHRuaW5nY3NzLWxpbnV4LXg2NC1nbnUiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtbXVzbCI6ICIxLjMyLjAiLCAibGlnaHRuaW5nY3NzLXdpbjMyLWFybTY0LW1zdmMiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy13aW4zMi14NjQtbXN2YyI6ICIxLjMyLjAiIH0gfSwgInNoYTUxMi1OWFlCemluTnJibGZyYVBHeXJiUG9EMTlDMWg5bGZJLzFtemdXWXZYVVRlNDE0R3ovWDFGRDJYQlpTWk03clJUck1BOEpMM090QWFHaWZySUtoUTV5UT09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1hbmRyb2lkLWFybTY0IjogWyJsaWdodG5pbmdjc3MtYW5kcm9pZC1hcm02NEAxLjMyLjAiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItWUs3L0NsVHQ0a0FLMHZvNnczWCtQbm0wRDJjZjJ2UEhiaE9YZG9OdGkxR2EwYWwxUDRUQlpod2pBVHZqTndMRUJDbkt2akpjMmpRZ0hYSDBORXdsQWc9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtZGFyd2luLWFybTY0IjogWyJsaWdodG5pbmdjc3MtZGFyd2luLWFybTY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVJ6ZUc5SnU1YmFnMkJ2MS9sd2xWSnZCRTNxNlR0WHNrZFpMTEN5Zmc1cHQrSEx6OUJxbElDTzdMWk03VkhOVFRuLzVQUmhIRkJTams1bGM0Y21zY1BRPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzLWRhcndpbi14NjQiOiBbImxpZ2h0bmluZ2Nzcy1kYXJ3aW4teDY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1VK1FzQnAybS9zMndxcFVZVC82d25sYWdkWmJ0WmRuZFNtdXQvTkpxbENjTUxUV3A1bXVDcklEK0s1VUo2anFEMkJGc2hlakNZWG5pUERiTmg3M1Y4dz09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1mcmVlYnNkLXg2NCI6IFsibGlnaHRuaW5nY3NzLWZyZWVic2QteDY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSkNUaWdlZEVrc1prM3RIVFR0aG5NZFZmR2Y2MUZreThKaTJFNFlqVVRFUVgxNHhpeS9sVHpYbnUxdndpWmUzYlllMHErU3BzU0gvQ1RlRFhLNldIaWc9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtLWdudWVhYmloZiI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LWFybS1nbnVlYWJpaGZAMS4zMi4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTIteDZybm5wUmEyR0wwelFPa3Q2cnRzM1lEUHpkdUxwV3Z3QUY2RU1oWEZWWlhENHRQckJrRUZxekdvd3pDc0lXc1BqcVNLK3R5TkVPRFVCWGVlVkhTa3c9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251IjogWyJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItMG5uTXlveU9MUkpYZmJNT2lsYVNSY0xIM0p3NXo5SEROR2ZUL2d3Q1BnYURqbngwaTh3N3ZCekZMRlIxZjZDTUxLRjhnVmJlYm1rVU4zZmEva1FKcFE9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtbXVzbCI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LWFybTY0LW11c2xAMS4zMi4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1VcFFrb2VucjRVSkV6Z1ZJWXBJODBsREZ2Um1QVmc2b3Fib05IZm9INENRSWZOQStIT3JaN01vN0taUDAyZEM2TGpnaFBRSmVCc3ZYaEpvZC93bklCZz09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtZ251IjogWyJsaWdodG5pbmdjc3MtbGludXgteDY0LWdudUAxLjMyLjAiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1WN1FyNTJJaFptZEtQVnIrVnR3OG8rV0xzUUpZQ1RkOGxvSWZwRGFNUldHVVpmQk9ZRUpleUpJa3FHSURNWlB3UHgyNHBVTWZ3U3h4SThwaHIvTWJPQT09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtbXVzbCI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LXg2NC1tdXNsQDEuMzIuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLWJZY0xwK1ZiMGF3c2lYZy84MHVDUmV6Q1lITmcxL2wzbXQwZ3pIbldWOVhQMVc1c0thNS9UQ2RHV2FSL3pCTTJQZUYvSGJzUXYvajJVUk5PaVZ1eFdnPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzLXdpbjMyLWFybTY0LW1zdmMiOiBbImxpZ2h0bmluZ2Nzcy13aW4zMi1hcm02NC1tc3ZjQDEuMzIuMCIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItOFNiQzhCUjQwcFM2YmFDTThzYnRZRFN3RVZRZDRKbEZUT2xhRDNnV0dIZlRoVGNBQm5OREJkYTZlVFplcWJvZmFsSUpoRngwcUt6Z0hKbWNQVG5HZHc9PSJdLAoKICAgICJsaWdodG5pbmdjc3Mtd2luMzIteDY0LW1zdmMiOiBbImxpZ2h0bmluZ2Nzcy13aW4zMi14NjQtbXN2Y0AxLjMyLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1BbXE5Qi9Tb1pZZERpMWtGcm9qbm9xUEx4WWhRNFdvNVhpTDhFVkpyVnNCOEFSb0MxUFdXNlZHdFQwV0tDZW1qeThhQytsb3VKbmpTN1UxOHgzYjA2UT09Il0sCgogICAgIm1hZ2ljLXN0cmluZyI6IFsibWFnaWMtc3RyaW5nQDAuMzAuMjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjIjogIl4xLjUuNSIgfSB9LCAic2hhNTEyLXZkMkY0WVV5RVhLR2NMSG9xK1RFeUNqeHVlU2VIbkZ4eXlqTnA4MHlnMFhWNHZVaG5EZXIvbHZ2bHFNL2FyQjViWFFONUsyLzNvaW55Q1J5eDhUMkNRPT0iXSwKCiAgICAibmFub2lkIjogWyJuYW5vaWRAMy4zLjEyIiwgIiIsIHsgImJpbiI6IHsgIm5hbm9pZCI6ICJiaW4vbmFub2lkLmNqcyIgfSB9LCAic2hhNTEyLVpCOVJILzM5cXBxNVZ1NlkrTm1VYUZoUVI2cHArTTJYdDc2WEJuRXdEYUdjVkFxaGx2eHJsM0IyYktTNUQzTkgzUVI3NnYzYVNyS2FGL0tpeTdsRXRRPT0iXSwKCiAgICAibmV4dCI6IFsibmV4dEAxNi4yLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQG5leHQvZW52IjogIjE2LjIuNiIsICJAc3djL2hlbHBlcnMiOiAiMC41LjE1IiwgImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZyI6ICJeMi45LjE5IiwgImNhbml1c2UtbGl0ZSI6ICJeMS4wLjMwMDAxNTc5IiwgInBvc3Rjc3MiOiAiOC40LjMxIiwgInN0eWxlZC1qc3giOiAiNS4xLjYiIH0sICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBuZXh0L3N3Yy1kYXJ3aW4tYXJtNjQiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy1kYXJ3aW4teDY0IjogIjE2LjIuNiIsICJAbmV4dC9zd2MtbGludXgtYXJtNjQtZ251IjogIjE2LjIuNiIsICJAbmV4dC9zd2MtbGludXgtYXJtNjQtbXVzbCI6ICIxNi4yLjYiLCAiQG5leHQvc3djLWxpbnV4LXg2NC1nbnUiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy1saW51eC14NjQtbXVzbCI6ICIxNi4yLjYiLCAiQG5leHQvc3djLXdpbjMyLWFybTY0LW1zdmMiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy13aW4zMi14NjQtbXN2YyI6ICIxNi4yLjYiLCAic2hhcnAiOiAiXjAuMzQuNSIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJAb3BlbnRlbGVtZXRyeS9hcGkiOiAiXjEuMS4wIiwgIkBwbGF5d3JpZ2h0L3Rlc3QiOiAiXjEuNTEuMSIsICJiYWJlbC1wbHVnaW4tcmVhY3QtY29tcGlsZXIiOiAiKiIsICJyZWFjdCI6ICJeMTguMi4wIHx8IDE5LjAuMC1yYy1kZTY4ZDJmNC0yMDI0MTIwNCB8fCBeMTkuMC4wIiwgInJlYWN0LWRvbSI6ICJeMTguMi4wIHx8IDE5LjAuMC1yYy1kZTY4ZDJmNC0yMDI0MTIwNCB8fCBeMTkuMC4wIiwgInNhc3MiOiAiXjEuMy4wIiB9LCAib3B0aW9uYWxQZWVycyI6IFsiQG9wZW50ZWxlbWV0cnkvYXBpIiwgIkBwbGF5d3JpZ2h0L3Rlc3QiLCAiYmFiZWwtcGx1Z2luLXJlYWN0LWNvbXBpbGVyIiwgInNhc3MiXSwgImJpbiI6IHsgIm5leHQiOiAiZGlzdC9iaW4vbmV4dCIgfSB9LCAic2hhNTEyLXFPVmdLSmcxK0F0MTVOcGVVUCtlSmdDSHZUQ2dYc29nd2VxODdSaS9JeDdQa3FRSGc0c2RhWG1TRnFLbGdhSVhFNGtXMGcyNUxFNjhXODdVQU5sSHR3PT0iXSwKCiAgICAib2J1ZyI6IFsib2J1Z0AyLjEuMSIsICIiLCB7fSwgInNoYTUxMi11VHFGOU11UHJhQVErSXNuUGYzNjZSRzRjUDlSdFVpN01MTzFOM0tFYyt3YjBhNnlLcGVMMGxtazJJQjFqWTVLSFBBbFRjNlQvSlJkQy9ZcXhITndrUT09Il0sCgogICAgInBhdGhlIjogWyJwYXRoZUAyLjAuMyIsICIiLCB7fSwgInNoYTUxMi1XVWpHY0FxUDFnUWFjb1FlK09CSnNGQTdMZDREeVh1VUlqWjVjYzc1Y0xIdko3ZHROc1R1Z3BoeElBRHdzcFMrQXJhQVVlUENLclNWdFBMRmovRjg4dz09Il0sCgogICAgInBpY29jb2xvcnMiOiBbInBpY29jb2xvcnNAMS4xLjEiLCAiIiwge30sICJzaGE1MTIteGNlSDJzbmh0YjVNOWxpcURzbUV3NTZsZTM3Nm1UWmtFWC9qRWIvUnhORnllZ051bDdlTnNsQ1hQOUZEai9MY3UwWDhLRXlNY2VQMm50cGFIckRFVkE9PSJdLAoKICAgICJwaWNvbWF0Y2giOiBbInBpY29tYXRjaEA0LjAuNCIsICIiLCB7fSwgInNoYTUxMi1RUDg4QkFLdk1hbS8zTnhINnZqMm8yMVI2TWp4WlVBZDZubHdBUy9wbkd2TjlJVkxvY0xIeEdZSXpGaGc2ZlVRKzV0aDZQNGR2NGVXOWpYM0RTSWo3QT09Il0sCgogICAgInBvc3Rjc3MiOiBbInBvc3Rjc3NAOC41LjE1IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIm5hbm9pZCI6ICJeMy4zLjEyIiwgInBpY29jb2xvcnMiOiAiXjEuMS4xIiwgInNvdXJjZS1tYXAtanMiOiAiXjEuMi4xIiB9IH0sICJzaGE1MTItRmZSOHNqZDRlbTJUNmZiM0kyTXdBSlU3SFdWTXI5emJhK2VubVFlZVdGZkNibStVT0MvMFg0RFM4WHRwVVRNd1dNR2JqS1lQN3hqZk5la3p5R21CM0E9PSJdLAoKICAgICJyZWFjdCI6IFsicmVhY3RAMTkuMi42IiwgIiIsIHt9LCAic2hhNTEyLXNmV0dHZmF2aTB4cjhQZzBzVnN5SE1BT3ppVllLZ1BMTnJTN2lnK2l2TU5iM3diQ0J3M0t4dGZsc0dCQXdEM2dZUWxFL0FFWnNUTGdUb1JyU0NqYjBRPT0iXSwKCiAgICAicmVhY3QtZGF5LXBpY2tlciI6IFsicmVhY3QtZGF5LXBpY2tlckA5LjE0LjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGRhdGUtZm5zL3R6IjogIl4xLjQuMSIsICJAdGFiYnlfYWkvaGlqcmktY29udmVydGVyIjogIjEuMC41IiwgImRhdGUtZm5zIjogIl40LjEuMCIsICJkYXRlLWZucy1qYWxhbGkiOiAiNC4xLjAtMCIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJyZWFjdCI6ICI+PTE2LjguMCIgfSB9LCAic2hhNTEyLXRCYW9EV2pQd2UwTTVwR3J1bTRIMFNSNkx5aytCTzlvSG5wOUpiS3BHS1cybWxyYU5QZ1A5Qk1mc2c1cFdwd3Jzc0FSbWVxazdZQmwyb1h1dFpUYUhBPT0iXSwKCiAgICAicmVhY3QtZG9tIjogWyJyZWFjdC1kb21AMTkuMi42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInNjaGVkdWxlciI6ICJeMC4yNy4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgInJlYWN0IjogIl4xOS4yLjYiIH0gfSwgInNoYTUxMi0wcHJNSStodkJiUGpzV254REx4bENHeU04UE42VXVXakVVQ1ltWmhPNjd4SVY5WGFzYS9yL3ZEbnErWHlxNExvMjdnOFFTYk81WXpBUnUwRDFTcHMzZz09Il0sCgogICAgInJlcXVpcmUtZGlyZWN0b3J5IjogWyJyZXF1aXJlLWRpcmVjdG9yeUAyLjEuMSIsICIiLCB7fSwgInNoYTUxMi1mR3hFSTcrd3NHOXhydmRqc3JsbUwyMk9NVFRpSFJ3QU1yb2lFZU1ncThnem9MQy9QUXI3UnNSRFNUTFVnL2JaQVp0RitUVklrSGM2LzRSSUtydWkrUT09Il0sCgogICAgInJlc2VsZWN0IjogWyJyZXNlbGVjdEA1LjIuMCIsICIiLCB7fSwgInNoYTUxMi1BZ1ozVU9abTNZbmRmcko0T1lqZ3JUN2JtQ20vMWlxa2p2RWZIL29ZanpoNlBEMnF3NFF1VDNqam5YSXJwZHQ0TVRwTVhjbE1UM2xYYm1SWStYUmFrdz09Il0sCgogICAgInJvbGxkb3duIjogWyJyb2xsZG93bkAxLjAuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAb3hjLXByb2plY3QvdHlwZXMiOiAiPTAuMTMwLjAiLCAiQHJvbGxkb3duL3BsdWdpbnV0aWxzIjogIl4xLjAuMCIgfSwgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQHJvbGxkb3duL2JpbmRpbmctYW5kcm9pZC1hcm02NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1kYXJ3aW4tYXJtNjQiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1mcmVlYnNkLXg2NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmIjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LWFybTY0LWdudSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsIjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXBwYzY0LWdudSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1zMzkweC1nbnUiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctbGludXgteDY0LWdudSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC14NjQtbXVzbCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1vcGVuaGFybW9ueS1hcm02NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy13YXNtMzItd2FzaSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjIjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLXdpbjMyLXg2NC1tc3ZjIjogIjEuMC4xIiB9LCAiYmluIjogeyAicm9sbGRvd24iOiAiYmluL2NsaS5tanMiIH0gfSwgInNoYTUxMi1YMEtRSGxqTm5Fa1dOcXFpejl6SnJHdW5oMUIwSGdPeExYdm5GcENPY2FkemN5NXFvaFozdHFNRVVnMDB2bmNvUm92WHVLM1pxQ1Q5S25uS3pvSW5GUT09Il0sCgogICAgInJ4anMiOiBbInJ4anNANy44LjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuMS4wIiB9IH0sICJzaGE1MTItZGhLZjkwM1UvUFFaWTZib05OdEFHZFdiRzg1V0FialQvMXhZb1pJQzdGQVkweVdhcE9CUVZzVnJEbDU4Vzg2Ly9lMVZwTU5CdFJWNE1hWGZkTXlTRkE9PSJdLAoKICAgICJzY2hlZHVsZXIiOiBbInNjaGVkdWxlckAwLjI3LjAiLCAiIiwge30sICJzaGE1MTItZU52K1dyVmJLdTFmM3ZiWUpUL3h0aUY1c3lBNUhQSU10ZjlJZ1kvbktnMHNXcXpBVUV2cVkveG03T2NaYy9xYWZMeC9pTzlGZ09tZVNBcDR2NXRpL1E9PSJdLAoKICAgICJzZW12ZXIiOiBbInNlbXZlckA3LjguMCIsICIiLCB7ICJiaW4iOiB7ICJzZW12ZXIiOiAiYmluL3NlbXZlci5qcyIgfSB9LCAic2hhNTEyLUFjTTdkVi81dWw0RWVrb1EyOUFnbTV2cmk4Sk5xUnlqMzlvMHFwWDZ2REYyR1pydHV0Wmw1UndnRDFYblpqaVRBZm5jc0poTUk0OFFRSDNzTjg3WU5BPT0iXSwKCiAgICAic2hhcnAiOiBbInNoYXJwQDAuMzQuNSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAaW1nL2NvbG91ciI6ICJeMS4wLjAiLCAiZGV0ZWN0LWxpYmMiOiAiXjIuMS4yIiwgInNlbXZlciI6ICJeNy43LjMiIH0sICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtZGFyd2luLWFybTY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLWRhcndpbi14NjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWRhcndpbi14NjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybSI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgtYXJtNjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1yaXNjdjY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1zMzkweCI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgteDY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4bXVzbC14NjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saW51eC1hcm0iOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgtYXJtNjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgtcHBjNjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgtcmlzY3Y2NCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC1saW51eC1zMzkweCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC1saW51eC14NjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXhtdXNsLWFybTY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLWxpbnV4bXVzbC14NjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtd2FzbTMyIjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLXdpbjMyLWFybTY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLXdpbjMyLWlhMzIiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtd2luMzIteDY0IjogIjAuMzQuNSIgfSB9LCAic2hhNTEyLU91OUk1RnQ5V05jQ2JYclU5Y01nUEJjQ0s4TGl3THFjYnl3VzN0NG9EVjM3bjFwenB1TkxzWWlBVjhlT0RuamJ0UWxTRHdaMmNVRWVRejRFNTRIbHRnPT0iXSwKCiAgICAic2hlbGwtcXVvdGUiOiBbInNoZWxsLXF1b3RlQDEuOC4zIiwgIiIsIHt9LCAic2hhNTEyLU9ibW5JRjRoWE5nMUJxaG5IbWdiREVURjhkTFBDZ2daV0Jqa1FmaFpwYnN6Wm5ZdXI1RFVsalRjQ0hpaTVMQzNKNUUweWVPLzFMSU15SCtVdkhRZ3l3PT0iXSwKCiAgICAic2lnaW5mbyI6IFsic2lnaW5mb0AyLjAuMCIsICIiLCB7fSwgInNoYTUxMi15YngwV08xLzhiU0JMRVdYWnZFZDdnTVczU24zSkZsVzNUdlgxblJFYkRMUk5RTmFlTk44V0swbWVCd1BkQWFPSTdUdFJSUkpuL0VzMXpocnJDSHU3Zz09Il0sCgogICAgInNvdXJjZS1tYXAiOiBbInNvdXJjZS1tYXBAMC42LjEiLCAiIiwge30sICJzaGE1MTItVWpnYXB1bVdsYk1oa0JnelQ3WWtjNVlYVVQ0NkYwaUt1OFNHWHEwYmN3UDVkei9oMFBsajZlbkpxanoxWmJxMmw1V2FxWW5yVmJ3V09XTXlGM0Y0N2c9PSJdLAoKICAgICJzb3VyY2UtbWFwLWpzIjogWyJzb3VyY2UtbWFwLWpzQDEuMi4xIiwgIiIsIHt9LCAic2hhNTEyLVVYV01LaExPd1ZLYjcyOElVdFFQWHhmWVUrdXNkeWJ0VXJLLzh1R0U4Q1FNdnJoT3B3dnpEQndqMFFoU0w3TVFjN3ZJc0lTQkc4VlE4K0lEUXhwZlFBPT0iXSwKCiAgICAic291cmNlLW1hcC1zdXBwb3J0IjogWyJzb3VyY2UtbWFwLXN1cHBvcnRAMC41LjIxIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImJ1ZmZlci1mcm9tIjogIl4xLjAuMCIsICJzb3VyY2UtbWFwIjogIl4wLjYuMCIgfSB9LCAic2hhNTEyLXVCSFUzTDNjenNJeVlYS1g4OGZkckdvdnhkU0NvVEdEUlo2U1lYdFNSeExaVXpIZzVQLzY2SHQ2dW9VbEh1OUVab2QraW5YaEtvM3FRZ3dYVVQveTF3PT0iXSwKCiAgICAic3RhY2tiYWNrIjogWyJzdGFja2JhY2tAMC4wLjIiLCAiIiwge30sICJzaGE1MTItMVhNSkU1ZlFvMWpHSDZZLzdlYm53UE9CRWtJRW5UNFFGMzJkNVIxK1ZYZFh2ZU0wSUJNSnQ4emZheFgxUDNRaFZ3clllKzU3Nitqa0FOdFNTMm1CYnc9PSJdLAoKICAgICJzdGQtZW52IjogWyJzdGQtZW52QDQuMS4wIiwgIiIsIHt9LCAic2hhNTEyLVJxN3liY1gyUnVDNTVyOW9hUFZFVzcveHUzdGo4dTRHZUJZSEJXQ3ljaEZ0ek1Jcjg2QTdlM1BQRUJQVDM3c0hTdEtYMytUaVgvRnIvQUNtSkxWbExRPT0iXSwKCiAgICAic3RyaW5nLXdpZHRoIjogWyJzdHJpbmctd2lkdGhANC4yLjMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZW1vamktcmVnZXgiOiAiXjguMC4wIiwgImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50IjogIl4zLjAuMCIsICJzdHJpcC1hbnNpIjogIl42LjAuMSIgfSB9LCAic2hhNTEyLXdLeVFSUXBqSjBzSXA2MkVyU1pkR3NqTUpXc2FwNW9STmloSGh1Nkc3SlZPLzlqSUI2VXlldkwrdFh1T3Fybmc4ai9jeEtUV3lXVXd2U1RyaWlaei9nPT0iXSwKCiAgICAic3RyaXAtYW5zaSI6IFsic3RyaXAtYW5zaUA2LjAuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJhbnNpLXJlZ2V4IjogIl41LjAuMSIgfSB9LCAic2hhNTEyLVkzOFZQU0hjcWtGckNwRm5ROXZ1U1htcXV1djVvWE9LcEdlVDZhR3JyM28zR2M5QWxWYTZKQmZVU09DbmJ4R0daRisvMG9vSTdLclB1VVN6dFVkVTVBPT0iXSwKCiAgICAic3R5bGVkLWpzeCI6IFsic3R5bGVkLWpzeEA1LjEuNiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjbGllbnQtb25seSI6ICIwLjAuMSIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJyZWFjdCI6ICI+PSAxNi44LjAgfHwgMTcueC54IHx8IF4xOC4wLjAtMCB8fCBeMTkuMC4wLTAiIH0gfSwgInNoYTUxMi1xU1Z5RFRlTW90ZHZRWW9IV0xOR3dSRkpIQytpK1p2ZEJSWW9zT0ZnQytXZzF2eDRmck4yL1JHL05BN1NZcXF2S05MZjM5UDJMU1JBMnB1Nm4wWFlaQT09Il0sCgogICAgInN1cHBvcnRzLWNvbG9yIjogWyJzdXBwb3J0cy1jb2xvckA4LjEuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJoYXMtZmxhZyI6ICJeNC4wLjAiIH0gfSwgInNoYTUxMi1NcFVFTjJPb2R0VXp4dktRbDcyY1VGN1JRNUVpSHNHdlNzVkcwaWE5YzVSYldHTDJDSTRDN0VwUFM4VVRCSXBsbmx6WmlOdVY1NncrRnVOeHkzdHkyUT09Il0sCgogICAgInRhaWx3aW5kLW1lcmdlIjogWyJ0YWlsd2luZC1tZXJnZUAzLjYuMCIsICIiLCB7fSwgInNoYTUxMi11eEw3cUFWUXJpcVJRUEF5SzNwajY2VnFza1dxb1ozN1BXOTRqd09Ud05mcS96OW95dTFWK2VxclpxdFIyK2ZDaVhkWU9aZS9Nb2R0OEd0dnFOenUrdz09Il0sCgogICAgInRhaWx3aW5kY3NzIjogWyJ0YWlsd2luZGNzc0A0LjMuMCIsICIiLCB7fSwgInNoYTUxMi15Nm54TUdCMW5NVzlSNms5NmU1Z2RJRnpjZkwvZ1RKUk5hcUdlczFZdmtMblBWWHpXZ2JxRkYyeUxDMFQ4Rzc3NG4yNGN4M1BlOFhyS29uaUNPQUgrUT09Il0sCgogICAgInRhcGFibGUiOiBbInRhcGFibGVAMi4zLjMiLCAiIiwge30sICJzaGE1MTItdXhjL3pwcUZnNng3Qzh2T0U3bGg2TGJkYThlRUw5em1WbS9QTGVUUEJSaGgxeENnZFdhUStKMUNVaWVHcElmbTJIZHRzVXBSditIc2hpYXNCTWNjNkE9PSJdLAoKICAgICJ0ZXJzZXIiOiBbInRlcnNlckA1LjE2LjkiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlLW1hcCI6ICJeMC4zLjIiLCAiYWNvcm4iOiAiXjguNS4wIiwgImNvbW1hbmRlciI6ICJeMi4yMC4wIiwgInNvdXJjZS1tYXAtc3VwcG9ydCI6ICJ+MC41LjIwIiB9LCAiYmluIjogeyAidGVyc2VyIjogImJpbi90ZXJzZXIiIH0gfSwgInNoYTUxMi1IUGEvRmRUQjlYR0kySDEva2VMRlpIeGw2V052QUk0WWFsSEd0RFFUbE1uSmNvcVNhYjFVd0w0bDFoR0VoczYvR21MSEJaSWcvWWdCKytqY2J6b09FZz09Il0sCgogICAgInRpbnliZW5jaCI6IFsidGlueWJlbmNoQDIuOS4wIiwgIiIsIHt9LCAic2hhNTEyLTArRFV2cVdNVmFsTG1oYTZscjRrRDhpQU1LMUh6VjAvYUtuQ3RXYjl2OTY0MVRuUC9NRmI3UGMyYnhveFFqVFhBRXJyeVhWZ1VPZnYyWXFObGxxR2VnPT0iXSwKCiAgICAidGlueWV4ZWMiOiBbInRpbnlleGVjQDEuMS4yIiwgIiIsIHt9LCAic2hhNTEyLWRBcVNxRS9SYWJwQktJOCtoMjZHZkxxNlZiM0pWWHMzMFhZUWpkTWphai9jMnRTOElZWU1iSXpQNTk5S3RSajdjNTcvd1lBcGIzUWpnUmdYbXJDdWtBPT0iXSwKCiAgICAidGlueWdsb2JieSI6IFsidGlueWdsb2JieUAwLjIuMTYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZmRpciI6ICJeNi41LjAiLCAicGljb21hdGNoIjogIl40LjAuNCIgfSB9LCAic2hhNTEyLXBuOTlWaG9BQ1lSOG5GSGh4cWl4K3V2c2JYaW5lQWFzV201b2pYb044eEV3SzVLZDMvVHJoTm4xd0J5dUQ1MlV4V1JMeThwdStrUk1uaUVpNkVxOVpnPT0iXSwKCiAgICAidGlueXJhaW5ib3ciOiBbInRpbnlyYWluYm93QDMuMS4wIiwgIiIsIHt9LCAic2hhNTEyLUJmK0lMbUJncmV0VXJkSnh6WE0wU2dYTFozWGZpYVV1T2ovSUtRSHVUWGlwKzA1WG4rdXlFWWRWZzBrWURpcFRCY0xyQ1Z5VXpBUHo3UW1BcmIwbW13PT0iXSwKCiAgICAidHJlZS1raWxsIjogWyJ0cmVlLWtpbGxAMS4yLjIiLCAiIiwgeyAiYmluIjogeyAidHJlZS1raWxsIjogImNsaS5qcyIgfSB9LCAic2hhNTEyLUwwT3JwaThxR3BSRy8vTmQrSDkwdkZCKzNpSG51ZTF6U1NHbU5PT0NoMUdMSjdyVUtWd1YySHZpanBoR1FTMlVtaFVaZXdTOVZndnhZSWRncitmRzFBPT0iXSwKCiAgICAidHNsaWIiOiBbInRzbGliQDIuOC4xIiwgIiIsIHt9LCAic2hhNTEyLW9KRnU5NEhRYitLVmR1U1VRTDd3bnBtcW5mbUxzT0EvbkFoNmI2RUgwd0NFb0swL21QZVhVNmMzd0tEVjgzTWtPdUhQUkh0U1hLS1U5OUlCYXpTLzJ3PT0iXSwKCiAgICAidHlwZXNjcmlwdCI6IFsidHlwZXNjcmlwdEA1LjkuMyIsICIiLCB7ICJiaW4iOiB7ICJ0c2MiOiAiYmluL3RzYyIsICJ0c3NlcnZlciI6ICJiaW4vdHNzZXJ2ZXIiIH0gfSwgInNoYTUxMi1qbDF2WnpQRGluTHI5ZVV0M0ovdDdWNkZnTkV3OVFqdkJQZHlzejlLZlFERDQxZlFyQzJZNHZLUWRpYVVwRlQ0YlhsYjFSSGhMcHA4d3RtNk01VGdTdz09Il0sCgogICAgInVuZGljaS10eXBlcyI6IFsidW5kaWNpLXR5cGVzQDYuMjEuMCIsICIiLCB7fSwgInNoYTUxMi1pd0RacWcwUUFHcmc5UmF2NUg0bjBNNjRjM21rUjU5Y0o2d1FwKzdDNG5JMGdzbUV4YWVkYVlMTk80NGVUNEF0QkJ3amJUaUdQTWx0Mk1kMFQ5SDlKUT09Il0sCgogICAgInVzZS1zeW5jLWV4dGVybmFsLXN0b3JlIjogWyJ1c2Utc3luYy1leHRlcm5hbC1zdG9yZUAxLjYuMCIsICIiLCB7ICJwZWVyRGVwZW5kZW5jaWVzIjogeyAicmVhY3QiOiAiXjE2LjguMCB8fCBeMTcuMC4wIHx8IF4xOC4wLjAgfHwgXjE5LjAuMCIgfSB9LCAic2hhNTEyLVBwNkdTd0dQL05yUElyeFZGQUlrT1FleXc4bEZlbk9IaWpRV2tVVHJEdnJGNEFMcXlsUDJDL0tDa2VTOWRwVU0zS3ZZUlFobmE1dnQ3SUw5NStaUTl3PT0iXSwKCiAgICAidml0ZSI6IFsidml0ZUA4LjAuMTMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAibGlnaHRuaW5nY3NzIjogIl4xLjMyLjAiLCAicGljb21hdGNoIjogIl40LjAuNCIsICJwb3N0Y3NzIjogIl44LjUuMTQiLCAicm9sbGRvd24iOiAiMS4wLjEiLCAidGlueWdsb2JieSI6ICJeMC4yLjE2IiB9LCAib3B0aW9uYWxEZXBlbmRlbmNpZXMiOiB7ICJmc2V2ZW50cyI6ICJ+Mi4zLjMiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL25vZGUiOiAiXjIwLjE5LjAgfHwgPj0yMi4xMi4wIiwgIkB2aXRlanMvZGV2dG9vbHMiOiAiXjAuMS4xOCIsICJlc2J1aWxkIjogIl4wLjI3LjAgfHwgXjAuMjguMCIsICJqaXRpIjogIj49MS4yMS4wIiwgImxlc3MiOiAiXjQuMC4wIiwgInNhc3MiOiAiXjEuNzAuMCIsICJzYXNzLWVtYmVkZGVkIjogIl4xLjcwLjAiLCAic3R5bHVzIjogIj49MC41NC44IiwgInN1Z2Fyc3MiOiAiXjUuMC4wIiwgInRlcnNlciI6ICJeNS4xNi4wIiwgInRzeCI6ICJeNC44LjEiLCAieWFtbCI6ICJeMi40LjIiIH0sICJvcHRpb25hbFBlZXJzIjogWyJAdHlwZXMvbm9kZSIsICJAdml0ZWpzL2RldnRvb2xzIiwgImVzYnVpbGQiLCAiaml0aSIsICJsZXNzIiwgInNhc3MiLCAic2Fzcy1lbWJlZGRlZCIsICJzdHlsdXMiLCAic3VnYXJzcyIsICJ0ZXJzZXIiLCAidHN4IiwgInlhbWwiXSwgImJpbiI6IHsgInZpdGUiOiAiYmluL3ZpdGUuanMiIH0gfSwgInNoYTUxMi1NRnRqQllnem1TeG1nQTRSQWZqSXlYV3BHZTFvQUxuamdVVHp6VjdRTHgvVEt4Q3pqdE1INkZkOS9lVksrNUZnMXFOb3o1VkF3c21Ncy9Ob2ZybUp2dz09Il0sCgogICAgInZpdGVzdCI6IFsidml0ZXN0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvZXhwZWN0IjogIjQuMS42IiwgIkB2aXRlc3QvbW9ja2VyIjogIjQuMS42IiwgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6ICI0LjEuNiIsICJAdml0ZXN0L3J1bm5lciI6ICI0LjEuNiIsICJAdml0ZXN0L3NuYXBzaG90IjogIjQuMS42IiwgIkB2aXRlc3Qvc3B5IjogIjQuMS42IiwgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAiZXMtbW9kdWxlLWxleGVyIjogIl4yLjAuMCIsICJleHBlY3QtdHlwZSI6ICJeMS4zLjAiLCAibWFnaWMtc3RyaW5nIjogIl4wLjMwLjIxIiwgIm9idWciOiAiXjIuMS4xIiwgInBhdGhlIjogIl4yLjAuMyIsICJwaWNvbWF0Y2giOiAiXjQuMC4zIiwgInN0ZC1lbnYiOiAiXjQuMC4wLXJjLjEiLCAidGlueWJlbmNoIjogIl4yLjkuMCIsICJ0aW55ZXhlYyI6ICJeMS4wLjIiLCAidGlueWdsb2JieSI6ICJeMC4yLjE1IiwgInRpbnlyYWluYm93IjogIl4zLjEuMCIsICJ2aXRlIjogIl42LjAuMCB8fCBeNy4wLjAgfHwgXjguMC4wIiwgIndoeS1pcy1ub2RlLXJ1bm5pbmciOiAiXjIuMy4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBlZGdlLXJ1bnRpbWUvdm0iOiAiKiIsICJAb3BlbnRlbGVtZXRyeS9hcGkiOiAiXjEuOS4wIiwgIkB0eXBlcy9ub2RlIjogIl4yMC4wLjAgfHwgXjIyLjAuMCB8fCA+PTI0LjAuMCIsICJAdml0ZXN0L2Jyb3dzZXItcGxheXdyaWdodCI6ICI0LjEuNiIsICJAdml0ZXN0L2Jyb3dzZXItcHJldmlldyI6ICI0LjEuNiIsICJAdml0ZXN0L2Jyb3dzZXItd2ViZHJpdmVyaW8iOiAiNC4xLjYiLCAiQHZpdGVzdC9jb3ZlcmFnZS1pc3RhbmJ1bCI6ICI0LjEuNiIsICJAdml0ZXN0L2NvdmVyYWdlLXY4IjogIjQuMS42IiwgIkB2aXRlc3QvdWkiOiAiNC4xLjYiLCAiaGFwcHktZG9tIjogIioiLCAianNkb20iOiAiKiIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkBlZGdlLXJ1bnRpbWUvdm0iLCAiQG9wZW50ZWxlbWV0cnkvYXBpIiwgIkB0eXBlcy9ub2RlIiwgIkB2aXRlc3QvYnJvd3Nlci1wbGF5d3JpZ2h0IiwgIkB2aXRlc3QvYnJvd3Nlci1wcmV2aWV3IiwgIkB2aXRlc3QvYnJvd3Nlci13ZWJkcml2ZXJpbyIsICJAdml0ZXN0L2NvdmVyYWdlLWlzdGFuYnVsIiwgIkB2aXRlc3QvY292ZXJhZ2UtdjgiLCAiQHZpdGVzdC91aSIsICJoYXBweS1kb20iLCAianNkb20iXSwgImJpbiI6IHsgInZpdGVzdCI6ICJ2aXRlc3QubWpzIiB9IH0sICJzaGE1MTItNmx2amJTM3A5YjRDcmRDbWd1emJoMi80dW9YaEdFMnE3MVI0T1g1c3FGOVIxYm85WGQ2ZkdyTUFmdnA1d25DemxCbkZWZENPcDZvbnVUUVZibzhpVVE9PSJdLAoKICAgICJ3aHktaXMtbm9kZS1ydW5uaW5nIjogWyJ3aHktaXMtbm9kZS1ydW5uaW5nQDIuMy4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInNpZ2luZm8iOiAiXjIuMC4wIiwgInN0YWNrYmFjayI6ICIwLjAuMiIgfSwgImJpbiI6IHsgIndoeS1pcy1ub2RlLXJ1bm5pbmciOiAiY2xpLmpzIiB9IH0sICJzaGE1MTItaFVybWFXQmRWRGN4dllxbnloMDl6dW5LelJPV2piWlRpTnk4ZEJFamtTN2VoRURRaWJYSjdYdmxtdGJ3dVRjbFVpSXlOK0N5WFFENFZta284Zk5tOHc9PSJdLAoKICAgICJ3cmFwLWFuc2kiOiBbIndyYXAtYW5zaUA3LjAuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJhbnNpLXN0eWxlcyI6ICJeNC4wLjAiLCAic3RyaW5nLXdpZHRoIjogIl40LjEuMCIsICJzdHJpcC1hbnNpIjogIl42LjAuMCIgfSB9LCAic2hhNTEyLVlWR0lqMmthbUxTVHh3Nk5zWmpvQnhmU3dzbjB5Y2Rlc21jNHArUTIxYzV6UHVaMXBsK05meFZkeFB0ZEh2bU5WT1E2WFNZRzRBVXR5dC9GaTdEMTZRPT0iXSwKCiAgICAieTE4biI6IFsieTE4bkA1LjAuOCIsICIiLCB7fSwgInNoYTUxMi0wcGZGemVnZURXSkhKSUFtVExSUDJEd0hqZEY1czdqbzl0dXp0ZFF4QWhJTkNkdlMrM25HSU5xUGQwMEFwaHFKUi8wTGhBTlVTNi8rN1NDYjk4WU9mQT09Il0sCgogICAgInlhbWwiOiBbInlhbWxAMi45LjAiLCAiIiwgeyAiYmluIjogeyAieWFtbCI6ICJiaW4ubWpzIiB9IH0sICJzaGE1MTItMkF2aE5YM21iOHpkNlp5N0lOVHRTcGwxRjE1SFc2V25xajBzcldsa0tMY3BZbC9nTUlNSml5dUdxMktlSTJZRnhVUGpkbEIrM0xjMTBzZU1MdEw0Y0E9PSJdLAoKICAgICJ5YXJncyI6IFsieWFyZ3NAMTcuNy4yIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImNsaXVpIjogIl44LjAuMSIsICJlc2NhbGFkZSI6ICJeMy4xLjEiLCAiZ2V0LWNhbGxlci1maWxlIjogIl4yLjAuNSIsICJyZXF1aXJlLWRpcmVjdG9yeSI6ICJeMi4xLjEiLCAic3RyaW5nLXdpZHRoIjogIl40LjIuMyIsICJ5MThuIjogIl41LjAuNSIsICJ5YXJncy1wYXJzZXIiOiAiXjIxLjEuMSIgfSB9LCAic2hhNTEyLTdkU3p6UlErK0NLbk5JL2tyS25ZUlY3SktLUFVYTUVoNjFzb2FIS2c5bXJXRWh6RldoRm54UHhHbCs2OWNEMU91NjNDMTNOVVBDbm1JY3J2cUN1TTZ3PT0iXSwKCiAgICAieWFyZ3MtcGFyc2VyIjogWyJ5YXJncy1wYXJzZXJAMjEuMS4xIiwgIiIsIHt9LCAic2hhNTEyLXRWcHNKVzdEZGplY0FpRnBiSUIxZTNxeElRc0U2Tm9QYzUvZVRkcmJiSUM0aDBMVnNXaG5vYTNnK20ySGNsQkl1akh6c3haNFZKVkErR1V1YzIvTEJ3PT0iXSwKCiAgICAiem9kIjogWyJ6b2RANC40LjMiLCAiIiwge30sICJzaGE1MTIteXRFTkZqSUpGbDJVd1lnbGRlMmpjaFcySHdtNEdKRkxEaVNYV2RUckpRQklOOUZjeXA3bjREaHhKRWlXTkFKTVYxL0JxV2ZXL2trZzcxVURjSEp5VFE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQGVtbmFwaS9jb3JlIjogWyJAZW1uYXBpL2NvcmVAMS4xMC4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvd2FzaS10aHJlYWRzIjogIjEuMi4xIiwgInRzbGliIjogIl4yLjQuMCIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTIteXE2T2tKNHA4MkNBZlBsMHU5bVFlYlFIS1BKa1k3V3JJdWsyMDVjVFluWWUrazJaOFlCaDExRnJiUkcvSDZpaGlycWNhY09nbDJCSU84b3lNUUxlWHc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQGVtbmFwaS9ydW50aW1lIjogWyJAZW1uYXBpL3J1bnRpbWVAMS4xMC4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRzbGliIjogIl4yLjQuMCIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItZXd2WWxrODZ4VW9HSTB6UVJOcS9tQysxNlIxUWVEbEtReTIxS2kzb1NZWE5nTGI0NUdWMVA2QTBNKy9zNm55Q3VORHFlNVZwYVk4NEJ6WEd3VmJ3RkE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQGVtbmFwaS93YXNpLXRocmVhZHMiOiBbIkBlbW5hcGkvd2FzaS10aHJlYWRzQDEuMi4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRzbGliIjogIl4yLjQuMCIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItdVRJSTdPWUYrL01lcy9NcmNJT1lwNXlPdFNNTEJXU0lvTFBwY2d3aXBvaUtibGk2azMyMnRjb0ZzeG9JSXhQRHFXMDFTUUdBZ2tvNEV6WmkyQk52Mnc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQG5hcGktcnMvd2FzbS1ydW50aW1lIjogWyJAbmFwaS1ycy93YXNtLXJ1bnRpbWVAMS4xLjQiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHR5YnlzL3dhc20tdXRpbCI6ICJeMC4xMC4xIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvY29yZSI6ICJeMS43LjEiLCAiQGVtbmFwaS9ydW50aW1lIjogIl4xLjcuMSIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItM05RTk5nQTFZU2xKYi9rTUgxaWxkQVNQOUhXNy83a1luUkkyc3pXSmFvZmFTMWhXbWJHSTRIK2QzKzIyYUd6WFhOOUlKK24rR2lGVmNHaXBKUDE4b3c9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQHR5YnlzL3dhc20tdXRpbCI6IFsiQHR5YnlzL3dhc20tdXRpbEAwLjEwLjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9LCAiYnVuZGxlZCI6IHRydWUgfSwgInNoYTUxMi1Sb0J2SjJYMHd1S2xXRklqcndmZkd3MUlxWkhLUXF6SWNoS2FhZFpaZm5OcHNBWXAybU0waDM2SnRQQ2pOREFIR2dZZXovMTV1TUJwZkd3Y2hoaU1nZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS13YXNtMzItd2FzaS90c2xpYiI6IFsidHNsaWJAMi44LjEiLCAiIiwgeyAiYnVuZGxlZCI6IHRydWUgfSwgInNoYTUxMi1vSkZ1OTRIUWIrS1ZkdVNVUUw3d25wbXFuZm1Mc09BL25BaDZiNkVIMHdDRW9LMC9tUGVYVTZjM3dLRFY4M01rT3VIUFJIdFNYS0tVOTlJQmF6Uy8ydz09Il0sCgogICAgImNoYWxrL3N1cHBvcnRzLWNvbG9yIjogWyJzdXBwb3J0cy1jb2xvckA3LjIuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJoYXMtZmxhZyI6ICJeNC4wLjAiIH0gfSwgInNoYTUxMi1xcENBdlJsOXN0dU9IdmVLc243SG5jSlJ2djUwMXFJYWNLelFsTy8rTHd4YzkrMHEyd0x5djREZnZ0ODAvRFBuMnBxT0JzSmREaW9nWEdSOStPdndSdz09Il0sCgogICAgIm5leHQvcG9zdGNzcyI6IFsicG9zdGNzc0A4LjQuMzEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAibmFub2lkIjogIl4zLjMuNiIsICJwaWNvY29sb3JzIjogIl4xLjAuMCIsICJzb3VyY2UtbWFwLWpzIjogIl4xLjAuMiIgfSB9LCAic2hhNTEyLVBTMDhJYm9pYTltdHMvMnlnVjNlTHBZNWdoblVjZkxWL0VYVE9XMUUycVl4SktHR0JVdE5qTjc2RllIbk1zMzZSbUFSbjQxYkMwQVptbityUjBPVnBRPT0iXSwKICB9Cn0K" }, { "path": "metadata.json", "kind": "text", "content": '{\n "id": "services",\n "name": "Services",\n "tagline": "Bookable-services storefront with calendar slots and staff profiles.",\n "industry": "services",\n "tags": ["services", "bookings", "appointments"],\n "stability": "stable",\n "schemaType": "BeautySalon",\n "mock": {\n "seedName": "services",\n "seedBusinessId": "bus_serene_spa"\n }\n}\n' }, { "path": "next.config.ts", "kind": "text", "content": 'import type { NextConfig } from "next";\n\n// Same-origin proxy target for the storefront API. The public key\n// decides: a real `cpk_live_\u2026` / `cpk_test_\u2026` only resolves against\n// hosted Cimplify, so browser cart writes go to the same place the\n// server catalogue reads come from. Anything else (`mock-dev`, empty)\n// falls back to the local `cimplify dev` mock in dev.\nconst publicKey = process.env.NEXT_PUBLIC_CIMPLIFY_PUBLIC_KEY?.trim() ?? "";\nconst keyTargetsHostedCimplify =\n publicKey.startsWith("cpk_live_") || publicKey.startsWith("cpk_test_");\nconst STOREFRONT_URL =\n process.env.NODE_ENV === "production" || keyTargetsHostedCimplify\n ? "https://storefronts.cimplify.io"\n : "http://127.0.0.1:8787";\n\nif (STOREFRONT_URL === "http://127.0.0.1:8787") {\n console.warn(\n "[cimplify] next.config resolved the local storefront API URL; production deploys must run with NODE_ENV=production.",\n );\n}\n\n// Cache Components (\'use cache\' + cacheTag/cacheLife) require Node-specific\n// setTimeout atomicity and serialize a postponed state that routinely exceeds\n// CF Workers\' 128MB zlib limit. We\'re on Cloudflare Workers via opennext, so\n// we stay on Next 16\'s "Previous Model" \u2014 `fetch.next.{revalidate,tags}` via\n// the SDK\'s `cacheOptions`, plus `export const revalidate` per page. See\n// https://nextjs.org/docs/app/guides/caching-without-cache-components.\nconst nextConfig: NextConfig = {\n async redirects() {\n return [\n { source: "/login", destination: "/account", permanent: false },\n { source: "/signup", destination: "/account", permanent: false },\n ];\n },\n async rewrites() {\n return [\n { source: "/api/v1/:path*", destination: `${STOREFRONT_URL}/api/v1/:path*` },\n { source: "/img/:path*", destination: `${STOREFRONT_URL}/img/:path*` },\n { source: "/elements/:path*", destination: `${STOREFRONT_URL}/elements/:path*` },\n { source: "/_mock/:path*", destination: `${STOREFRONT_URL}/_mock/:path*` },\n ];\n },\n images: {\n loader: "custom",\n loaderFile: "./lib/cimplify-loader.ts",\n remotePatterns: [\n { protocol: "http", hostname: "127.0.0.1", port: "8787", pathname: "/img/**" },\n { protocol: "http", hostname: "localhost", port: "8787", pathname: "/img/**" },\n { protocol: "http", hostname: "localhost", port: "3000", pathname: "/img/**" },\n { protocol: "https", hostname: "loremflickr.com", pathname: "/**" },\n { protocol: "https", hostname: "images.unsplash.com", pathname: "/**" },\n { protocol: "https", hostname: "static-tmp.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "storefrontassetscdn.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "cdn.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "res.cloudinary.com", pathname: "/cimplify/**" },\n ],\n },\n};\n\nexport default nextConfig;\n' }, { "path": "CLAUDE.md", "kind": "text", "content": "# CLAUDE.md\n\nThis project was scaffolded from a Cimplify storefront template (`cimplify init`).\n\n## Read these first\n\n- **`AGENTS.md`** at the project root \u2014 the file \u2194 `brand.X` field map for *this template's* industry, plus the architectural rules.\n- **`.claude/skills/cimplify-storefront/SKILL.md`** \u2014 the playbook for common tasks (rebrand, add a section, wire a Server Action, deploy, eject a component). Invoke it whenever you're asked to change content, palette, copy, or routing.\n\n## The two-line summary\n\n1. **Edit `lib/brand.ts`** for any visible string.\n2. **Edit `app/globals.css` `@theme` block** for any palette / radius / font change.\n\nThat covers ~95% of what merchants ask for. For anything else, follow the `cimplify-storefront` skill.\n\n## Don't do\n\n- Hardcode strings in pages or components.\n- Enable `cacheComponents: true` in `next.config.ts` \u2014 we're on Cloudflare Workers, where `'use cache'` postponed state blows past CF's 128MB zlib limit. This template stays on Next 16's \"Previous Model\" (ISR): `export const revalidate` per page + `cacheOptions: { revalidate, tags }` on SDK reads.\n- Add `'use cache'`, `cacheTag`, or `cacheLife` anywhere. Use the SDK's `cacheOptions` instead.\n- Use `unstable_cache` \u2014 it's gone in Next 16. Use SDK `cacheOptions` or `fetch.next.{revalidate,tags}`.\n- Run `bun test` (Bun's `vi` shim is incomplete) \u2014 use `bun run test:run`.\n" }, { "path": "app/about/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `About \u2014 ${brand.name}`,\n description: brand.description,\n};\n\nexport default function AboutPage() {\n const a = brand.about;\n const titleParts = a.title.split("\\n");\n return (\n <article className="max-w-3xl mx-auto px-6 sm:px-8 py-16">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2">\n {a.eyebrow}\n </p>\n <h1 className="font-serif text-[clamp(2.25rem,5vw,3.5rem)] font-semibold mb-6 -tracking-[0.02em]">\n {titleParts.map((line, i) => (\n <span key={i}>\n {line}\n {i < titleParts.length - 1 && <br />}\n </span>\n ))}\n </h1>\n <div className="prose prose-lg max-w-none space-y-5 text-foreground/90 leading-relaxed">\n {a.paragraphs.map((p, i) => (\n <p key={i}>{p}</p>\n ))}\n {a.sections.map((s) => (\n <div key={s.heading}>\n <h2 className="font-serif text-3xl font-semibold mt-10 mb-3">{s.heading}</h2>\n <p>{s.body}</p>\n </div>\n ))}\n </div>\n </article>\n );\n}\n' }, { "path": "app/llms.txt/route.ts", "kind": "text", "content": 'import { getServerClient, tags, type Product } from "@cimplify/sdk/server";\nimport { brand } from "@/lib/brand";\nimport { getSiteUrl } from "@/lib/site-url";\n\nexport const revalidate = 3600;\n\nasync function buildLlmsTxt(SITE_URL: string): Promise<string> {\n const client = getServerClient();\n const [productsRes, categoriesRes, collectionsRes] = await Promise.all([\n client.catalogue.getProducts(\n { limit: 500 },\n { cacheOptions: { revalidate: 3600, tags: [tags.products()] } },\n ),\n client.catalogue.getCategories({\n cacheOptions: { revalidate: 3600, tags: [tags.categories()] },\n }),\n client.catalogue.getCollections({\n cacheOptions: { revalidate: 3600, tags: [tags.collections()] },\n }),\n ]);\n\n const products: Product[] = productsRes.ok ? productsRes.value.items : [];\n const categories = categoriesRes.ok ? categoriesRes.value : [];\n const collections = collectionsRes.ok ? collectionsRes.value : [];\n\n const lines: string[] = [];\n lines.push(`# ${brand.name}`);\n lines.push("");\n lines.push(`> ${brand.llms.summary}`);\n lines.push("");\n lines.push("## Browse");\n lines.push(`- [Home](${SITE_URL}/)`);\n lines.push(`- [Shop](${SITE_URL}/shop): Full menu with filter and sort.`);\n\n if (categories.length > 0) {\n lines.push("");\n lines.push("## Categories");\n for (const c of categories) {\n lines.push(\n `- [${c.name}](${SITE_URL}/categories/${c.slug})${c.description ? `: ${c.description}` : ""}`,\n );\n }\n }\n\n if (collections.length > 0) {\n lines.push("");\n lines.push("## Collections");\n for (const c of collections) {\n lines.push(\n `- [${c.name}](${SITE_URL}/collections/${c.slug})${c.description ? `: ${c.description}` : ""}`,\n );\n }\n }\n\n if (products.length > 0) {\n lines.push("");\n lines.push("## Products");\n for (const p of products) {\n const slug = p.slug ?? p.id;\n const price = `${brand.currency} ${p.default_price}`;\n const desc = p.description ? ` \u2014 ${p.description.replace(/\\s+/g, " ").slice(0, 200)}` : "";\n lines.push(`- [${p.name}](${SITE_URL}/shop?product=${slug}) (${price})${desc}`);\n }\n }\n\n lines.push("");\n lines.push("## Information");\n lines.push(`- [About](${SITE_URL}/about)`);\n lines.push(`- [FAQ](${SITE_URL}/faq)`);\n lines.push(`- [Terms of Service](${SITE_URL}/terms)`);\n lines.push(`- [Privacy Policy](${SITE_URL}/privacy)`);\n lines.push(`- [Sitemap (XML)](${SITE_URL}/sitemap.xml)`);\n lines.push("");\n lines.push("## Contact");\n lines.push(`- Email: ${brand.contact.email}`);\n lines.push(`- Phone: ${brand.contact.phone}`);\n lines.push(`- Address: ${brand.contact.address}`);\n\n return lines.join("\\n") + "\\n";\n}\n\n/**\n * `/llms.txt` \u2014 machine-readable site index for LLMs (per llmstxt.org).\n * Lets coding agents and chat assistants find products, categories, and\n * support pages without scraping HTML. Plain Markdown so it streams cheaply\n * into context windows.\n */\nexport async function GET(): Promise<Response> {\n const body = await buildLlmsTxt(await getSiteUrl());\n return new Response(body, {\n headers: {\n "Content-Type": "text/plain; charset=utf-8",\n "Cache-Control": "public, max-age=0, s-maxage=3600, stale-while-revalidate=86400",\n },\n });\n}\n' }, { "path": "app/contact/contact-form.tsx", "kind": "text", "content": `"use client";
|
|
4975
|
+
` }, { "path": "lib/site-url.ts", "kind": "text", "content": 'import { SITE_URL } from "./site.config";\n\n/** Canonical absolute URL for this storefront. */\nexport async function getSiteUrl(): Promise<string> {\n return SITE_URL;\n}\n' }, { "path": "lib/cimplify-loader.ts", "kind": "text", "content": 'import type { ImageLoader } from "next/image";\n\nimport { assetUrl, isCimplifyAsset } from "@cimplify/sdk";\n\nconst cdnBase = process.env.NEXT_PUBLIC_CIMPLIFY_CDN_URL?.trim() || undefined;\n\nconst cimplifyImageLoader: ImageLoader = ({ src, width, quality }) => {\n if (isCimplifyAsset(src, cdnBase)) {\n return assetUrl(src, {\n base: cdnBase,\n w: width,\n quality,\n format: "auto",\n });\n }\n return src;\n};\n\nexport default cimplifyImageLoader;\n' }, { "path": "lib/cart.ts", "kind": "text", "content": '"use client";\n\nimport { useCart } from "@cimplify/sdk/react";\n\n/**\n * Reactive cart count for the header pill. Subscribes to the SDK cart\n * state \u2014 updates immediately on add / remove / quantity change.\n */\nexport function useCartCount(): { count: number } {\n const { itemCount } = useCart();\n return { count: itemCount };\n}\n' }, { "path": ".gitignore", "kind": "text", "content": "node_modules\n.next\n.open-next\nout\n.env\n.env.local\n.env*.local\n.DS_Store\n*.tsbuildinfo\nnext-env.d.ts\n" }, { "path": "package.json", "kind": "text", "content": '{\n "name": "__STOREFRONT_NAME__",\n "private": true,\n "version": "0.0.0",\n "scripts": {\n "dev": "concurrently -k -n mock,next -c blue,magenta \\"cimplify-mock --seed services --quiet\\" \\"next dev\\"",\n "dev:storefront": "next dev",\n "dev:mock": "cimplify-mock --seed services",\n "build": "next build",\n "start": "next start",\n "typecheck": "tsc --noEmit",\n "test": "vitest",\n "test:run": "vitest run",\n "check:brand": "vitest run __tests__/brand.test.ts",\n "check:cart": "vitest run __tests__/cart-flow.test.ts",\n "check:contract": "vitest run __tests__/contract.test.ts",\n "check": "bun run typecheck && bun run test:run"\n },\n "dependencies": {\n "@cimplify/sdk": "^0.57.0",\n "next": "^16.2.6",\n "react": "^19.0.0",\n "react-dom": "^19.0.0"\n },\n "devDependencies": {\n "@tailwindcss/postcss": "^4.2.4",\n "@types/node": "^22.10.0",\n "@types/react": "^19.0.0",\n "@types/react-dom": "^19.0.0",\n "concurrently": "^9.0.0",\n "tailwindcss": "^4.2.4",\n "typescript": "^5.9.3",\n "vitest": "^4.1.5"\n }\n}\n' }, { "path": "bun.lock", "kind": "binary", "content": "ewogICJsb2NrZmlsZVZlcnNpb24iOiAxLAogICJjb25maWdWZXJzaW9uIjogMSwKICAid29ya3NwYWNlcyI6IHsKICAgICIiOiB7CiAgICAgICJuYW1lIjogIl9fU1RPUkVGUk9OVF9OQU1FX18iLAogICAgICAiZGVwZW5kZW5jaWVzIjogewogICAgICAgICJAY2ltcGxpZnkvc2RrIjogIl4wLjU0LjAiLAogICAgICAgICJuZXh0IjogIl4xNi4yLjYiLAogICAgICAgICJyZWFjdCI6ICJeMTkuMC4wIiwKICAgICAgICAicmVhY3QtZG9tIjogIl4xOS4wLjAiLAogICAgICB9LAogICAgICAiZGV2RGVwZW5kZW5jaWVzIjogewogICAgICAgICJAdGFpbHdpbmRjc3MvcG9zdGNzcyI6ICJeNC4yLjQiLAogICAgICAgICJAdHlwZXMvbm9kZSI6ICJeMjIuMTAuMCIsCiAgICAgICAgIkB0eXBlcy9yZWFjdCI6ICJeMTkuMC4wIiwKICAgICAgICAiQHR5cGVzL3JlYWN0LWRvbSI6ICJeMTkuMC4wIiwKICAgICAgICAiY29uY3VycmVudGx5IjogIl45LjAuMCIsCiAgICAgICAgInRhaWx3aW5kY3NzIjogIl40LjIuNCIsCiAgICAgICAgInR5cGVzY3JpcHQiOiAiXjUuOS4zIiwKICAgICAgICAidml0ZXN0IjogIl40LjEuNSIsCiAgICAgIH0sCiAgICB9LAogIH0sCiAgInBhY2thZ2VzIjogewogICAgIkBhbGxvYy9xdWljay1scnUiOiBbIkBhbGxvYy9xdWljay1scnVANS4yLjAiLCAiIiwge30sICJzaGE1MTItVXJjQUJCKzRiVXJGQUJ3Ymx1VElCRXJYd3Zic1UvVjdUWldmbWJnSmZia3dpQnV6aVM5Z3hkT0RVeXVpZWNmZEdRODVqZ2xNVzZqdVMzK3o1VHNLTHc9PSJdLAoKICAgICJAYmFiZWwvcnVudGltZSI6IFsiQGJhYmVsL3J1bnRpbWVANy4yOS4yIiwgIiIsIHt9LCAic2hhNTEyLUppRFNoSDQ1ektIV3lHZTRaTlZSckNqQno4Tmg5VE1tWkcxa2g0UVRLOGhDQlRXQmk4RGEraTdzMWZKdzcvbFlwTTRjY2VwU05mcXpaL1F2QUJCaTVnPT0iXSwKCiAgICAiQGJhc2UtdWkvcmVhY3QiOiBbIkBiYXNlLXVpL3JlYWN0QDEuNS4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBiYWJlbC9ydW50aW1lIjogIl43LjI5LjIiLCAiQGJhc2UtdWkvdXRpbHMiOiAiMC4yLjkiLCAiQGZsb2F0aW5nLXVpL3JlYWN0LWRvbSI6ICJeMi4xLjgiLCAiQGZsb2F0aW5nLXVpL3V0aWxzIjogIl4wLjIuMTEiLCAidXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUiOiAiXjEuNi4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBkYXRlLWZucy90eiI6ICJeMS4yLjAiLCAiQHR5cGVzL3JlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgImRhdGUtZm5zIjogIl40LjAuMCIsICJyZWFjdCI6ICJeMTcgfHwgXjE4IHx8IF4xOSIsICJyZWFjdC1kb20iOiAiXjE3IHx8IF4xOCB8fCBeMTkiIH0sICJvcHRpb25hbFBlZXJzIjogWyJAZGF0ZS1mbnMvdHoiLCAiQHR5cGVzL3JlYWN0IiwgImRhdGUtZm5zIl0gfSwgInNoYTUxMi16MWdTQWxjZWQxeVkraU0rbUhERXRJa0Q4VUkzRWJzNTJNdUJQeHZWNmY1aFJ1dGsreHZDSC93dUI3aERxRHpLOUpHNUZvTXo1bmhycXRTczF3anQxQT09Il0sCgogICAgIkBiYXNlLXVpL3V0aWxzIjogWyJAYmFzZS11aS91dGlsc0AwLjIuOSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYmFiZWwvcnVudGltZSI6ICJeNy4yOS4yIiwgIkBmbG9hdGluZy11aS91dGlscyI6ICJeMC4yLjExIiwgInJlc2VsZWN0IjogIl41LjEuMSIsICJ1c2Utc3luYy1leHRlcm5hbC1zdG9yZSI6ICJeMS42LjAiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL3JlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgInJlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgInJlYWN0LWRvbSI6ICJeMTcgfHwgXjE4IHx8IF4xOSIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkB0eXBlcy9yZWFjdCJdIH0sICJzaGE1MTIteC9QRERDWXpvcVBwanJkeWIzVmN5eWxUSTJJalVYRXRZREdpNWZvaDdLc25tTkpJSWFWd0EyR0xnREgxZHBzMUdnWGlKYkE2MGhNK0F5dVRmUXpJdnc9PSJdLAoKICAgICJAY2ltcGxpZnkvc2RrIjogWyJAY2ltcGxpZnkvc2RrQDAuNTQuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYmFzZS11aS9yZWFjdCI6ICJeMS40LjEiLCAiY2xzeCI6ICJeMi4xLjEiLCAiZGF0ZS1mbnMiOiAiXjQuMS4wIiwgImxpYnBob25lbnVtYmVyLWpzIjogIjEuMTIuNDEiLCAicmVhY3QtZGF5LXBpY2tlciI6ICJeOS4xNC4wIiwgInRhaWx3aW5kLW1lcmdlIjogIl4zLjUuMCIsICJ6b2QiOiAiXjQuNC4zIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBwYXlzdGFjay9pbmxpbmUtanMiOiAiXjIuMjIuOCIsICJtc3ciOiAiPj0yLjAuMCIsICJyZWFjdCI6ICI+PTE3LjAuMCIsICJ2aXRlc3QiOiAiPj0yLjAuMCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkBwYXlzdGFjay9pbmxpbmUtanMiLCAibXN3IiwgInJlYWN0IiwgInZpdGVzdCJdLCAiYmluIjogeyAiY2ltcGxpZnktbW9jayI6ICJkaXN0L21vY2svY2xpLm1qcyIgfSB9LCAic2hhNTEyLVlVTi9sT3FWaUhjaTF2OVVTV1d3QVd0eTI5cEVYQmRMVHVLYXJTbDhFcGFmV2g1amtkR1oxUStOZTkvYmZnVFptUjhpVFVsdEE4VTdnbFYyRm9SU2dnPT0iXSwKCiAgICAiQGRhdGUtZm5zL3R6IjogWyJAZGF0ZS1mbnMvdHpAMS40LjEiLCAiIiwge30sICJzaGE1MTItUDVMVU5odGJqNllmSTNpSmp3NUVMOWVVQUc2T2l0RDBXM2ZXUWNwUWpEUmMvUUlzTDB0Uk51TzFQY0R2UGNjV0wxZlNUWFhkRTFkcytsOTVEVi9PRkE9PSJdLAoKICAgICJAZW1uYXBpL2NvcmUiOiBbIkBlbW5hcGkvY29yZUAxLjEwLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGVtbmFwaS93YXNpLXRocmVhZHMiOiAiMS4yLjEiLCAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTIteXE2T2tKNHA4MkNBZlBsMHU5bVFlYlFIS1BKa1k3V3JJdWsyMDVjVFluWWUrazJaOFlCaDExRnJiUkcvSDZpaGlycWNhY09nbDJCSU84b3lNUUxlWHc9PSJdLAoKICAgICJAZW1uYXBpL3J1bnRpbWUiOiBbIkBlbW5hcGkvcnVudGltZUAxLjEwLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTItZXd2WWxrODZ4VW9HSTB6UVJOcS9tQysxNlIxUWVEbEtReTIxS2kzb1NZWE5nTGI0NUdWMVA2QTBNKy9zNm55Q3VORHFlNVZwYVk4NEJ6WEd3VmJ3RkE9PSJdLAoKICAgICJAZW1uYXBpL3dhc2ktdGhyZWFkcyI6IFsiQGVtbmFwaS93YXNpLXRocmVhZHNAMS4yLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTItdVRJSTdPWUYrL01lcy9NcmNJT1lwNXlPdFNNTEJXU0lvTFBwY2d3aXBvaUtibGk2azMyMnRjb0ZzeG9JSXhQRHFXMDFTUUdBZ2tvNEV6WmkyQk52Mnc9PSJdLAoKICAgICJAZXNidWlsZC9haXgtcHBjNjQiOiBbIkBlc2J1aWxkL2FpeC1wcGM2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYWl4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi0xVkNJQ1d5cGVRS2hWYkU5b1cvc0phQW1qTHhoVnFhY2RrdlBMRWp3bHR0amZ3RU5SU0NsUzhFakJ6MEt6UnlGU0NQRElrdVhXMzRKZS92azd6ZEI3UT09Il0sCgogICAgIkBlc2J1aWxkL2FuZHJvaWQtYXJtIjogWyJAZXNidWlsZC9hbmRyb2lkLWFybUAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtIiB9LCAic2hhNTEyLVFOZFFFcHM3RGZGd0UzaFhpVTRCWmVPVjY4SEh6WXdHZDBOdGhoZDN1Q2trRUtLNy9SNk1UZ00wUDdIN0ZBczVwVS9ESVdzdmlNbUVHeEVveElaK1pRPT0iXSwKCiAgICAiQGVzYnVpbGQvYW5kcm9pZC1hcm02NCI6IFsiQGVzYnVpbGQvYW5kcm9pZC1hcm02NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItYkJ5NjlwZ2ZoTUd0Q253cEMveDVRaGZ4QXovY0JnUTllbmJ0d2pmNlY5bG5QSS9oTXlUOWlXcFIxYXJtMGwza3R0VHI0TDBLU0xwS21McC9pbEtTOUE9PSJdLAoKICAgICJAZXNidWlsZC9hbmRyb2lkLXg2NCI6IFsiQGVzYnVpbGQvYW5kcm9pZC14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImFuZHJvaWQiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1UVmhkVnRRSUZ1VnBJSVIyODJidGNHQzJvR1FvU2ZaZm1CZFRpcDJhbkNhVlljcVdsWlhHY2RjS0lVa2xmWDJ3ajBKa2xOWWd6MzlPQnFoMmNxWHZjUT09Il0sCgogICAgIkBlc2J1aWxkL2Rhcndpbi1hcm02NCI6IFsiQGVzYnVpbGQvZGFyd2luLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVkxZ2lDZk00bmxIRFdFZlNja016ZVdOZFFTMzFCUUdzOS9yb3V3NlViOTF0a0s3OWFJTVRIM3E5eEh2ekg4ZDB3RHJ1NUNpMGtXQjhiM3VwL25sMTZnPT0iXSwKCiAgICAiQGVzYnVpbGQvZGFyd2luLXg2NCI6IFsiQGVzYnVpbGQvZGFyd2luLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiZGFyd2luIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItQ0pzcnk4WkdNNVZGVmV5VVlCM2NkS3BkL0g2OVBZZXo0ZUpoMVcvdDM4dnp1dGRqRWp0UDdoQjZlTEtCb09keGNBbEN0RVlIelEvUEovb1U5STR1MEE9PSJdLAoKICAgICJAZXNidWlsZC9mcmVlYnNkLWFybTY0IjogWyJAZXNidWlsZC9mcmVlYnNkLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi15WXErMzlObFRSelUyWG1vUFc0bDVJZnBsOWZxU2swbkFKWU0vVi9XVUdQRUZmZWsxZXBMSEpJa1RRTTZiQnMxc3dBcGpPNW5XZ3ZyODQzZzZUanh1UT09Il0sCgogICAgIkBlc2J1aWxkL2ZyZWVic2QteDY0IjogWyJAZXNidWlsZC9mcmVlYnNkLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiZnJlZWJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLTBGZ3ZPSjZVVU1mbHNIU1BMemRmRG5uQkJWb0NEdEJUVnluL01yV2xvVU52cS81U0ZtaDEzbDNkdmdSUGtEaWhSeGI3N1kxN01icWJDQWEyc3RyTVFRPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtYXJtIjogWyJAZXNidWlsZC9saW51eC1hcm1AMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTIta3JvNGMwUDg1R01mRllxVzRUV09wdm1GOHJGU2hiV0duckxxbHpwNFgxVE5XalJZM0pNWVVmREN0T3hQS09JWThCMFdDOEhONTFoR1A0STRoejRBYVE9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1hcm02NCI6IFsiQGVzYnVpbGQvbGludXgtYXJtNjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi0rODlVc1FUZlhkbWpJdlpTNm5Vbk9PTG9YbmtVVEI5aFI1UUFlTHJRZHpPU1dadk5TQVhBdGNSREhXdHFBVXRBbXY3Wk0xV1BPT2VTeER6enpNb2dpUT09Il0sCgogICAgIkBlc2J1aWxkL2xpbnV4LWlhMzIiOiBbIkBlc2J1aWxkL2xpbnV4LWlhMzJAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJpYTMyIiB9LCAic2hhNTEyLXlURWpvYXB5OFVQM3J2OGRCMGlwM0FmTXBSYnloU04zK2hZOG1vL2k0UVhGZUR4bWlZYkVLcDNaUmpCS2NPUDg2MlVhNGIxUERmd2x2YnV3WTdoSUdRPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtbG9vbmc2NCI6IFsiQGVzYnVpbGQvbGludXgtbG9vbmc2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItTmVxcVlrcmNHekZ3aTZDR1JHTk1PaldHR1NZT3Bxd0NqUzlmdmFVbFg1czN6d090bjFxd2cxczJpRTJzdkJlNFEvWU9HMXE2ODc1bGNBb1FLL0Y0VkE9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1taXBzNjRlbCI6IFsiQGVzYnVpbGQvbGludXgtbWlwczY0ZWxAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJub25lIiB9LCAic2hhNTEyLUljdlRsRjlkdExyZkwvTThXZ05JL3FKWUJFTlAzZWtnc0hiWVVJekV6cTVYSnp6VkVWL2ZYWTlXRlBmRUVYbXUzY2sycUpQOExHL3AzUThmN1pjMlhnPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtcHBjNjQiOiBbIkBlc2J1aWxkL2xpbnV4LXBwYzY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAicHBjNjQiIH0sICJzaGE1MTItSE95MGFMVEpUVnRvVGVHWmg0SFNYYU82TTk1cXU0azVsSmNINGd4djU2aWF5Y2Z6MVM4R08vNUpoNlg0WTFZaUkwaDdjUnlMaStIaXhNUis4OHN3YWc9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1yaXNjdjY0IjogWyJAZXNidWlsZC9saW51eC1yaXNjdjY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1pOEpVREF1ZnB6OWpPem80eUlTaENUY1h6UzA3dkVnV3p5WDNOSDJHN0xFRlZnckxFaGp3TDNhakZFNGZaSTNJNFpnaU03SkgzR1E3UmVPYlJPdlNVQT09Il0sCgogICAgIkBlc2J1aWxkL2xpbnV4LXMzOTB4IjogWyJAZXNidWlsZC9saW51eC1zMzkweEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogInMzOTB4IiB9LCAic2hhNTEyLWpGbnUrNlViTGx6SWpQUXBXQ05oNVF0cmNOZk1MamdJYXZud1BRQWZvR3g0cTE3b2NPVTlNc1EyUVZ2Rnh3UW9XcFpUOER2VExvb1R2bU9RWGtPNTFnPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgteDY0IjogWyJAZXNidWlsZC9saW51eC14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItNmUwY3ZYd3pPblZXSkhxK21za1A4RE5TcktCcjFiVUxCdm5GTHBjMUtZK2QraXJaU2daMDJUR3NlNUZzYWZLUzVqZzJlNHBidks2VFBYYUYvQTYrQ0E9PSJdLAoKICAgICJAZXNidWlsZC9uZXRic2QtYXJtNjQiOiBbIkBlc2J1aWxkL25ldGJzZC1hcm02NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibm9uZSIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItdlVua0JZeFpXNGhML2llOTFoU3FhU05qdWxPbllYRTFWU0x1c252SGcydTNqZXdKQnozWXpCOStvQ3c4REFCZVZxWkdnOTR0OXR5WkZvSG1hOGdXWlE9PSJdLAoKICAgICJAZXNidWlsZC9uZXRic2QteDY0IjogWyJAZXNidWlsZC9uZXRic2QteDY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJub25lIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItWEFnOHBJUW41Q3poT0I4b2RJY0FtNDJRc09mYTk4U0JlS1VkbzR4YThPdlg4TGJNWnFFdGdlV0U5UC9XeHQ3TWxHMlFxdmpHdGhzK25xNDhUclVpS3c9PSJdLAoKICAgICJAZXNidWlsZC9vcGVuYnNkLWFybTY0IjogWyJAZXNidWlsZC9vcGVuYnNkLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJvcGVuYnNkIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1DdDJXY0ZFQU5sRkR0cDFuVkFYU05CUER4eVUrajcrdElkLy9pSFhVMmYvbE41QW1PNHpMeWhEY3BSNUN6MXIwOG1WeHp0M0pweXQ0UG1YUTFPNis3QT09Il0sCgogICAgIkBlc2J1aWxkL29wZW5ic2QteDY0IjogWyJAZXNidWlsZC9vcGVuYnNkLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAib3BlbmJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLXhBR0doeU9ROU90bTFYdThOVDFpZkdMbkE2TTNzSnhaNml4eWxiK3ZJVVZ6dnZkNkdPQUxwd1FyWXJ0bFBvdU1xZC92U2JnZWh6NkhhVms0KzdBZmh3PT0iXSwKCiAgICAiQGVzYnVpbGQvc3Vub3MteDY0IjogWyJAZXNidWlsZC9zdW5vcy14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogInN1bm9zIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItTXcrdHp5NHBwNndaRUswK0x3cjc2cFdManJ0am1KeVVCMjN0SEtxRURQNzRSM3E5NWx1WS9iWHFYWmVZbDROWWx2d09xb1JLbEluUWlhbGdDS3k2N1E9PSJdLAoKICAgICJAZXNidWlsZC93aW4zMi1hcm02NCI6IFsiQGVzYnVpbGQvd2luMzItYXJtNjRAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1BVlVQNDI4VlFUU2RkZ3V6OWRPOW5nYitFNWFTY3lnN25PZUpEckYxSFBZdTU1NWdtemEzYkRHTVBobVZYTDhzdkRTb3FQQ3NDUGpiMjY1eUcva0xLUT09Il0sCgogICAgIkBlc2J1aWxkL3dpbjMyLWlhMzIiOiBbIkBlc2J1aWxkL3dpbjMyLWlhMzJAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJpYTMyIiB9LCAic2hhNTEyLWkxc1crMWkrb1d2UXpTZ2ZSY3h4RzJrNEk5bjNPOU5ScXk4VSt1dWdhVDJEeTdrTE85WTd3STcyaGFPYWh4Y2VNWDhoWkF6Z0dvdTFGaG5kUmxkeFJnPT0iXSwKCiAgICAiQGVzYnVpbGQvd2luMzIteDY0IjogWyJAZXNidWlsZC93aW4zMi14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItbk9UMnZaTnc2aEorejQzb1AxU1BlYS9HLzZBYk42WCtiR05oTnVxOE50Ukh5NHdzTWh3NzY1SUtMTm1uamVrN0d2aldCWVE4UTVWQm9ZVEZnOXkxVVE9PSJdLAoKICAgICJAZmxvYXRpbmctdWkvY29yZSI6IFsiQGZsb2F0aW5nLXVpL2NvcmVAMS43LjUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGZsb2F0aW5nLXVpL3V0aWxzIjogIl4wLjIuMTEiIH0gfSwgInNoYTUxMi0xSWg0V1RXeXcwK2xLeUZNY0JIR2JiNVU1RnR1SEp1dWpveXlyNXpUYVdTNUVZTWVUNkpiMkF1RGVmdHNDc0V1Y2hPK21NMmlqNStxOWNyaHlkekxoUT09Il0sCgogICAgIkBmbG9hdGluZy11aS9kb20iOiBbIkBmbG9hdGluZy11aS9kb21AMS43LjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGZsb2F0aW5nLXVpL2NvcmUiOiAiXjEuNy41IiwgIkBmbG9hdGluZy11aS91dGlscyI6ICJeMC4yLjExIiB9IH0sICJzaGE1MTItOWdaU0FJNVhNMzY4ODBQUE1tLy85ZGZpRW5nWW9DNkFtMml6RVMxRkY0MDZZRnNqdnlCTW1lSjJnNFNBanUzeFd3dHV5bk5SRkwyczloZ3hwTEk1U1E9PSJdLAoKICAgICJAZmxvYXRpbmctdWkvcmVhY3QtZG9tIjogWyJAZmxvYXRpbmctdWkvcmVhY3QtZG9tQDIuMS44IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBmbG9hdGluZy11aS9kb20iOiAiXjEuNy42IiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgInJlYWN0IjogIj49MTYuOC4wIiwgInJlYWN0LWRvbSI6ICI+PTE2LjguMCIgfSB9LCAic2hhNTEyLWNDNTJiSHdNL24vQ3hTODdGSDB5V2RuZ0VacmpkdExXL3FWcnVvNjhxZytwcks3WlE0WUdkdXQyR3lEVnBvR2VBWWUvaDg5OXJWZU9WbTZPaTQwazJBPT0iXSwKCiAgICAiQGZsb2F0aW5nLXVpL3V0aWxzIjogWyJAZmxvYXRpbmctdWkvdXRpbHNAMC4yLjExIiwgIiIsIHt9LCAic2hhNTEyLVJpQi95SWg3OHBjSXhsNmxMTUcwQ2dCWEFaMlkwZVZIcU1QWXVndSs5VTBBZVQ2WUJlaUpwZjdsYmRKTkl1Z0ZQNVNJandOUmdvNERoUjFReGkyNkdnPT0iXSwKCiAgICAiQGltZy9jb2xvdXIiOiBbIkBpbWcvY29sb3VyQDEuMS4wIiwgIiIsIHt9LCAic2hhNTEyLVRkNzZxN2o1N28vdExWZGdTNzQ2Y1lBUmZTeXhrOGlFZlJ4ZXdMOWg0T016WWhiVzRUQWNwcGwwbVQ0ZXlxWGRkaDZML2p3b003NW1vN2l4YS9wQ2VRPT0iXSwKCiAgICAiQGltZy9zaGFycC1kYXJ3aW4tYXJtNjQiOiBbIkBpbWcvc2hhcnAtZGFyd2luLWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiAiMS4yLjQiIH0sICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLWltdFEzV01KWGJNWTRmeGIvTmRwNkhCVE5WdFdDVUkwV2RvYnloZUdmNSthZDZ4WDhWSURPOHUyeEU0cWMvZnIwOENLRy83ZERzZUZ0bjZNNmcvcjN3PT0iXSwKCiAgICAiQGltZy9zaGFycC1kYXJ3aW4teDY0IjogWyJAaW1nL3NoYXJwLWRhcndpbi14NjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWRhcndpbi14NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1ZTkVGQUYvNEtRL1BlVzBOK3IrYVZWc29JWTAvcXh4aWtGMlNXZHArTlJrbU1CN3k5TEJaQVZxUTR5aEdDbS9IM0gyNzBPU3lrcW1RTUtMQmhCSkRFdz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjRAMS4yLjQiLCAiIiwgeyAib3MiOiAiZGFyd2luIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi16cWpqbzdSYXRGZkZvUDBNa1E1MWpmdUZaQm5WRTJwUmlheWRLSjFHL3JIWnZuc3JIQU9jUUFMSWk5c0E1Y281eGVuUWRUdWdDdnRiMWN1Zjc4VmY0Zz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4teDY0IjogWyJAaW1nL3NoYXJwLWxpYnZpcHMtZGFyd2luLXg2NEAxLjIuNCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi0xSU9kNXhmVmhsR3dYK3pYdjJOOTNrMHlNT052VWxBTnlsYkp3MWVUYWg4Sy9KdHBpMTVLQytXU2lhWC9uQm1ibTJIeFJNMWdaMG5TZGpTc3JaYkdLZz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm0iOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm1AMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybSIgfSwgInNoYTUxMi1iRkk3eGNLRkVMZGlOQ1ZvdjhlNDRJYTR1MmJ5QStsM1h0c0FqK1E4dGZDd082QlE4aURvallkdm9QTXFzS0RrdW9PbytYNkhaQTBzMHExMUFOTVE4QT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm02NCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybTY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1leGNqWDhEZnNJY0oxMHgxS3pyNFJjV2UxZWRDOVBxdURSUlB4M1lWQ3ZRditVNXA3WWluMnMzMmZ0emlrWG9qYjFQSUZjLzlNdDI4L3kraVJrbGtydz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1wcGM2NCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi1GTXV2R2lqTERZRzZsVytiL1V2eWlsVVd1NUF5dSszcjJkMVM4bm90aUdDSXlZVS83NmVpZzFVZk1ta1o3dndnT3J6S3psUWJGU3VRZmdtN0dZVVBwQT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1yaXNjdjY0IjogWyJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgtcmlzY3Y2NEAxLjIuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1vVkRiY1I0elVDMGNlODJ0ZXViU20reDZFVGl4dEtaQmgvcWJSRUlPY0kzY1VMekR5YjE4U3IvV2N5eDdOUlFlUXpPaUhUTmJaRkYxVXdQUzJzY3lHQT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1zMzkweCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXMzOTB4QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJzMzkweCIgfSwgInNoYTUxMi1xbXA5VnJ6Z1BnTW9HWnlQdnJRSHFrMDJ1eWpBMC9RclRPMjZUcWs2bDRaVjBNUFdJVzZMVGtxT0lvditKMXlFdTdNYkZRYURwd2R3SktoYkp2dVJ4UT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjRAMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi10SnhpaUxzbUhjOUF4MWJ6M29hT1lCVVJUWEdJUkRPREJxaHZlVkhvbnJISjkvK2s4OXFiTGwwYmNKbnMrZTR0NHJ2YU5CeGFFWnNGdFNmQWRxdVBydz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjRAMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLUZWUUh1d3gxSUl1Tm93OVFBYllVekorRW44S2NWbTlMazUrdUdVUUpIYVptTUVDWm1PbGl4OUhuSDduMVRSa1hNUzBwR3hJSm9rSVZCOVN1cVpHR1h3PT0iXSwKCiAgICAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4bXVzbC14NjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wteDY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItK0xweUJrN0w0NFpJWHd6L1ZZZmdsYVgvb2t4ZXpFU2M2VXhEU295bzJLczZKeGM0WTdzR2pwZ1U5czRQTWdxZ2pqMWdaQ3lsVGllTmFtcUExTUY3RGc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4LWFybSI6IFsiQGltZy9zaGFycC1saW51eC1hcm1AMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybSI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItOWRMcXN2d3RnMXV1WEJHWktzeGVtOTU5NSt1anYwc0o2Vmk4d2NUQU5TRnB3Vi9HT05hdDVlQ2t6UW8vMU82elJJa2gwbS84KzVCanJScjdqRFVTWnc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4LWFybTY0IjogWyJAaW1nL3NoYXJwLWxpbnV4LWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm02NCI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1iS1F6YUpSWS9ia1BPWHlLeDVFVnVwN3FrYW9qRUNHNk5MWXN3Z2t0T1pqYVhlY1NBZUNXaVp3d2lGZjMvWStPMUhyYXVpRTNGVnNHeEZnOGMyNHJaZz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGludXgtcHBjNjQiOiBbIkBpbWcvc2hhcnAtbGludXgtcHBjNjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0IjogIjEuMi40IiB9LCAib3MiOiAibGludXgiLCAiY3B1IjogInBwYzY0IiB9LCAic2hhNTEyLTd6em53TmFxVzZZdHNmckdHREE2QlJrSVNLQUFFMUpvMFFkcE5ZWE5NSHUyKzBkVHJQZmxUTE5rcGM4bDdNVVA1TTE2WkpjVXZ5c1ZXV3JNZWZacXVBPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eC1yaXNjdjY0IjogWyJAaW1nL3NoYXJwLWxpbnV4LXJpc2N2NjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXJpc2N2NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi01MWdKdUxQVEthN3BpWVBhVnM4R21CeW83L1U3LzdUWk9xK2NuWEpJSFpLYXZJUkhBUDc3ZTNOMkhFbDNkZ2lxZEQvdzB5VWZpSm5JSTc3UHVEREZkdz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGludXgtczM5MHgiOiBbIkBpbWcvc2hhcnAtbGludXgtczM5MHhAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXMzOTB4IjogIjEuMi40IiB9LCAib3MiOiAibGludXgiLCAiY3B1IjogInMzOTB4IiB9LCAic2hhNTEyLW5RdENrMFBkS2ZobzNlQzVNcmJRb2lnSjJnZDFDZ2RkVU1rYWJVaityQmV2czh0WjJjVUxPeDQ2RTdveVgrMDRXR2ZBQmdJd21NQzBWcWllVGlSNGpnPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eC14NjQiOiBbIkBpbWcvc2hhcnAtbGludXgteDY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLU1FemQ4SFBLeFZ4VmVud0FhK0pSUHdFQzdRRmpvUFd1UzVOWm5CdDZCM3B1N0VHMkdlMGlkMW9MSFpwUEpkbjNPUUsrQlFEaXc5elN0aUhCVEpRUVFRPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eG11c2wtYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGludXhtdXNsLWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItZnBySlI2R3RSc010Nkt5ZnE0NElzQ2hWWmVHTjk3Z1REMzMxd2VSMWV4MWMxcnlwREVBQk42VG0yeGExd0U2bFliNURkRW5rMDNOWlBxQTdJZDIxeWc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4bXVzbC14NjQiOiBbIkBpbWcvc2hhcnAtbGludXhtdXNsLXg2NEAwLjM0LjUiLCAiIiwgeyAib3B0aW9uYWxEZXBlbmRlbmNpZXMiOiB7ICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXhtdXNsLXg2NCI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSmc4d05UMU1Vekl2aEJGeFZpcXJFaFdER3pxeW1vM3NWN3o3WnNhV2JaTkRMWFJKWm9SR3JqdWxwNjBZWXRWNHdmWThWSUtjV2lkam9qbExjV3JkOFE9PSJdLAoKICAgICJAaW1nL3NoYXJwLXdhc20zMiI6IFsiQGltZy9zaGFycC13YXNtMzJAMC4zNC41IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvcnVudGltZSI6ICJeMS43LjAiIH0sICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1PZFdURWlWa1kyUEh3cWtiQkk4ZnJGeFFRRmVrSGFTU2tVSUprd3pjbFdaZTY0TzFYNFVsVWpxcXFMYVBiVXBNT1FrNkZCdS9IdGxHWE5ibElzMGh1dz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzItYXJtNjQiOiBbIkBpbWcvc2hhcnAtd2luMzItYXJtNjRAMC4zNC41IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1XUTNBZ1dDV1lTYjJ5dCtJRzhtbkM2SmRrOVdoczdPMGd4cGhibHNMdmRoU3BTVHRtdTY5WkcxR2tiNk51dnhzTkFDd2lQVjZjTlNaTnp0MEtQc3c3Zz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzItaWEzMiI6IFsiQGltZy9zaGFycC13aW4zMi1pYTMyQDAuMzQuNSIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAiaWEzMiIgfSwgInNoYTUxMi1GVjltLzdObWVDbVNIREQ1ajQrNHBOSThDcDNhVytKdkxvWGNUVW8wSXF5alNmQVpKOGRJVW1pangxcWFKc0lpVStIb3N3NnhNNUtpakFXUkpDU2dOZz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzIteDY0IjogWyJAaW1nL3NoYXJwLXdpbjMyLXg2NEAwLjM0LjUiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi0rMjlZTXNxWTIvOWVGRWlXOTNlcVdudUxjV2N1Zm93WGV3d1NOSVQ2VXdaZFVVQ3JNM29Gak1XSC9aNi9UTW1iNGhsRmVubWZBVmJwV2V1cDJqcnlDdz09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogWyJAanJpZGdld2VsbC9nZW4tbWFwcGluZ0AwLjMuMTMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjIjogIl4xLjUuMCIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjQiIH0gfSwgInNoYTUxMi0ya2t0LzduaUo2TWdFUHhGMGJZZFE2ZXRaYUErZlF2RGNMS2NraHkxeUlRT3phb0tqQkJqU2o2My9hTFZqWUUzcWhSdDVkdk0rdVV5ZkNnNlVLQ0JiQT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3JlbWFwcGluZyI6IFsiQGpyaWRnZXdlbGwvcmVtYXBwaW5nQDIuMy41IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogIl4wLjMuNSIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjQiIH0gfSwgInNoYTUxMi1MSTl1LytsYVlHNERzMVRES1NKVzJZUHJJbGNWWU93aTJmVUM2eEI0M2x1ZUNqZ3hWNGxmZk9DWkN0WUZpSDZUTk9YK3RRS1h4OTdUNElLSGJoeUhFUT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3Jlc29sdmUtdXJpIjogWyJAanJpZGdld2VsbC9yZXNvbHZlLXVyaUAzLjEuMiIsICIiLCB7fSwgInNoYTUxMi1iUklTZ0NJalAyMC90YldTUFdNRWk1NFFWUFJaRXhrdUQ5bEpMK1VJeFVLdHdWSkE4d1cxVHJiMWpNczFSRlhvMUNCVE5aLzVocEM5UXZtS1dkb3BLdz09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3NvdXJjZS1tYXAiOiBbIkBqcmlkZ2V3ZWxsL3NvdXJjZS1tYXBAMC4zLjExIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogIl4wLjMuNSIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjUiIH0gfSwgInNoYTUxMi1aTXAxVjhaRmNQRzVkSVduUUxyM05TSTFNaUNVN1VFVGRTL0EwRzhWL1hXSHZKdjNac0ZxdXRKbjFZNVJQbUFQWDZGM0JpRTM5N09xdmVVLzlOQ3VJQT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3NvdXJjZW1hcC1jb2RlYyI6IFsiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjQDEuNS41IiwgIiIsIHt9LCAic2hhNTEyLWNZUTkzMTBncnF4dWVXYmwrV3VJVUlhaVVhRGNqN1dPcTVmVmhFbGpOVmdSZk9VaFk5ZnkyelR2Zm9xV3NuZWJoOFNsNzBWU2NGYklDdkpuTEtCME9nPT0iXSwKCiAgICAiQGpyaWRnZXdlbGwvdHJhY2UtbWFwcGluZyI6IFsiQGpyaWRnZXdlbGwvdHJhY2UtbWFwcGluZ0AwLjMuMzEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvcmVzb2x2ZS11cmkiOiAiXjMuMS4wIiwgIkBqcmlkZ2V3ZWxsL3NvdXJjZW1hcC1jb2RlYyI6ICJeMS40LjE0IiB9IH0sICJzaGE1MTItenpOUitTZFFTREp6Yzhqb2FlUDhRUW9DUXI4TnVZeDJkSUl5dGwxUWVCRVpISjl1VzZoZWJzcllnYno4aEp3VVFhbzNUV0NNdG1mVjhOdTF0d09MQXc9PSJdLAoKICAgICJAbmFwaS1ycy93YXNtLXJ1bnRpbWUiOiBbIkBuYXBpLXJzL3dhc20tcnVudGltZUAxLjEuNCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAdHlieXMvd2FzbS11dGlsIjogIl4wLjEwLjEiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQGVtbmFwaS9jb3JlIjogIl4xLjcuMSIsICJAZW1uYXBpL3J1bnRpbWUiOiAiXjEuNy4xIiB9IH0sICJzaGE1MTItM05RTk5nQTFZU2xKYi9rTUgxaWxkQVNQOUhXNy83a1luUkkyc3pXSmFvZmFTMWhXbWJHSTRIK2QzKzIyYUd6WFhOOUlKK24rR2lGVmNHaXBKUDE4b3c9PSJdLAoKICAgICJAbmV4dC9lbnYiOiBbIkBuZXh0L2VudkAxNi4yLjYiLCAiIiwge30sICJzaGE1MTItZ2Q4SG9ITjR1Zmo3M1dtUjNKbVZvbHJwSlI0N0lMSzZMb3VQNXhFbFBnbGFWeGlyNmUxYTdWenZUdkRXa09vUFhUOXJra1R6eUN4QnU0eWVaZlp3Y3c9PSJdLAoKICAgICJAbmV4dC9zd2MtZGFyd2luLWFybTY0IjogWyJAbmV4dC9zd2MtZGFyd2luLWFybTY0QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVpKR2trY05mWWdyck1rcU9kWjd6b0xhMVRPeTBxcGNNZmsvejRNaC9GS1V6NDBnVk8rSE5RV3FtTHhmNjdaNVdCNjREUnAwZGhFYnlIZmVsKzZzSlVnPT0iXSwKCiAgICAiQG5leHQvc3djLWRhcndpbi14NjQiOiBbIkBuZXh0L3N3Yy1kYXJ3aW4teDY0QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi12L1lMQkhJWTEzMkNlZDNwdUJKN1lKS3cxbHFzQ3JnY05vMmFSSmxDRXlRcnJDZVJKbHZHbG5teGhQeE5RSTNLRTNOMURONXI5VFBOUHZrYTNucTVSUT09Il0sCgogICAgIkBuZXh0L3N3Yy1saW51eC1hcm02NC1nbnUiOiBbIkBuZXh0L3N3Yy1saW51eC1hcm02NC1nbnVAMTYuMi42IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1SUE92cWxZQmJjUWprejlWUVFEWjJUMmJBUklqWFpWMUtGbHQrVjJNcjZTVy9lNEk5ZmNLc2FBMGhkeWYyRkhvVGxzVjJ4bkJkNVk5MTJyUC8xQ2U2dz09Il0sCgogICAgIkBuZXh0L3N3Yy1saW51eC1hcm02NC1tdXNsIjogWyJAbmV4dC9zd2MtbGludXgtYXJtNjQtbXVzbEAxNi4yLjYiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVVSVVR1MStkTWt4SnNQRmdtK09lRXZxOXdmNXN1ancwRXZnWXk4MFRER0hUU0xUbklIZXFiMEV1OEEzc0M5NUlSZ2plalFMK2tDNG13KzR5UHhpQVhBPT0iXSwKCiAgICAiQG5leHQvc3djLWxpbnV4LXg2NC1nbnUiOiBbIkBuZXh0L3N3Yy1saW51eC14NjQtZ251QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLURPajE4Mm1QVjhHM1VrcmF5TG9SRU01WUVZSStEazV3djdPeDl4bDFmRmliQUVMRXNGRDBsRFBmSEllSUxsdXRNTWZkeWhsellQRUxHM3BldUthdXJ3PT0iXSwKCiAgICAiQG5leHQvc3djLWxpbnV4LXg2NC1tdXNsIjogWyJAbmV4dC9zd2MtbGludXgteDY0LW11c2xAMTYuMi42IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSEtRNVNQL1YvdWI3M1V2RjduL3plSmx4azJrTG10TDdXenJnNFdmbWtqbU5vczVvbkoydEt1N3laT1BkTDE4QTZTdmZuM21heDI5eW0rcnk3TmtLNGc9PSJdLAoKICAgICJAbmV4dC9zd2Mtd2luMzItYXJtNjQtbXN2YyI6IFsiQG5leHQvc3djLXdpbjMyLWFybTY0LW1zdmNAMTYuMi42IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1MWlhwVGxQeVM1djdIaFNtbnZzTEdQM2lJWWdZT0JuYzhyOEFybFQ1NXNHSFY4OWJSMkhsRGRCaldRK1BZNlNKTW1rOFR1VkdGdXhhbG5QM2svMER3Zz09Il0sCgogICAgIkBuZXh0L3N3Yy13aW4zMi14NjQtbXN2YyI6IFsiQG5leHQvc3djLXdpbjMyLXg2NC1tc3ZjQDE2LjIuNiIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLUYwKzRpMGg5SjZDNGVFM0VBUFdzb0NrN1VXL2Riek9qeXp4WTBxbkRVT1lGdTZGRm1kWjZsOTcvWGRWMy9OejNWWXlPN1VXanlFSlVYa0dxY29YZk1BPT0iXSwKCiAgICAiQG94Yy1wcm9qZWN0L3R5cGVzIjogWyJAb3hjLXByb2plY3QvdHlwZXNAMC4xMzAuMCIsICIiLCB7fSwgInNoYTUxMi1pYkQydXN4OUpSdTdmNXB1MnRNS01JNGNwQTROZ1hKUW9ZUlA0cFE3UHhtbjFsNmsvNTNxV3RRV1pheWhZeTNYNFFaa3Q5ME90K21KRWFlWG91aW82UT09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWFuZHJvaWQtYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLWFuZHJvaWQtYXJtNjRAMS4wLjEiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItZkpJM0kwcjNDM09qL3pkQkNwYUNtQlJaWWYwN3hwYXE0eUNmRERvU0ZtK2JlV056YklsMjZwdVc4UnJhVWR1Z29Kdy85NXplck5PbjZqYXNBaHpTbWc9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1kYXJ3aW4tYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLWRhcndpbi1hcm02NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLWNLbkFoV0VzVjdUUGNBLzVFQXRlRHA2S2NKWkJRMkcrQnFFN3pheU1NaTdrTXZ3UnNidjdXVDlhT25uMFdObDRTS0VJZjQzdmpTMzFpVVB1ODBuelhnPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NCI6IFsiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1ZS3JWd1FqSVJCUG8rNUcvdTAzd0dqYmR5NHE3cHl6Q2U5M0RLOVZKN3prVm1lZzhMSjdHYmdzaUhXZFI0eFNvZTRDQVhSRDdCY2pnYnRyNjRia1hOZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWZyZWVic2QteDY0IjogWyJAcm9sbGRvd24vYmluZGluZy1mcmVlYnNkLXg2NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItei9vQnNSRW80NlNzRnFCd1l0RmUwa3BKZUJpakFUNDhPL1dYTEk0c3VpQ0xCa3IwM1JUdFRKTUN6U2REZDJ6bmxoOFZKaXpMMDlYVmtRZ2s4SVpvbnc9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmQDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItaWs4cTdHTTExenh2WXhGYzJQZURjVDZUQnZoQ1FNYVV4ZnBoL001bDlzS3VUcy9TamczTCtCeXcwRjd3MFpWTEJabXgzMFArZ0cwRUN6ek4rTUZjbVE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1nbnUiOiBbIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LWFybTY0LWdudUAxLjAuMSIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItUW9TeDJFa3lycmRaNmtjeUU4c3RxWjYydDBZcmE4RnM1aWE5bE94SnJoNlRNUUpLN2dRS21zY2RUSGY3cE9YS1JFS3JWd090SmNRRzNxVlNmYzg2NkE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsQDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi11d053RnB3S2VOaVphd2ZBV0JnZzBWSXp0UFRWM2loaGgxdlYzMzRoOWl2bk5Mb3J4blFNVTZGejh3RzFaYjRRaDlMQzEvTWtjeVQzWWxEWEczUnNnZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXBwYzY0LWdudSI6IFsiQHJvbGxkb3duL2JpbmRpbmctbGludXgtcHBjNjQtZ251QDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi16WTFidWw3T1dyN0RGQmlKKyt3b2ZYdm5yOEI0NWNlM1FzUVVoS3JJaFhzeWdBaDdiVGt3eWVNMWJpMWEyZzVDL3lDL044VFp5R0RFb01mbS9sOW1wZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXMzOTB4LWdudSI6IFsiQHJvbGxkb3duL2JpbmRpbmctbGludXgtczM5MHgtZ251QDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJzMzkweCIgfSwgInNoYTUxMi0wZnJsc1QvZjRGdDZJN1NNRVNUS25GM2Nac2RpY1FuMWRDTWtGL2pUOXdETEUrZ0dvaVFmdjFubVQ5ZStzN3MvZmVrdnZ5NnRaTTJqSHZJMnRrYkpEUT09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1nbnUiOiBbIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1nbnVAMS4wLjEiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1YQUJWbUdwOVRnMFdzcFRWdndkdVRjNGZwcXk2Sm5BVXJTUWU2T3V5cUQvMDNuSTdyME85T1dVa01Jd0ZyaktBSXFvbHZxb0E0WnJKcHBnd0UwR3htdz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1tdXNsIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC14NjQtbXVzbEAxLjAuMSIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLWJWNGZ6c3d1elZjS0Q5MG8vVk02UXFLeG54bERxMGcyQklTRExOVm14cm5ocHYxRERieVBoQ0lqWWZ2ellMVitNdmtLS25RdDJRNkFPODZTRUJVTFVRPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctb3Blbmhhcm1vbnktYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLW9wZW5oYXJtb255LWFybTY0QDEuMC4xIiwgIiIsIHsgIm9zIjogIm5vbmUiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLS9NaDBaaHEzT1A3ZlZzMGtjUUhaUDZsWkV0aE1HVGFTZjhVQlFZU0ZFWkRXR1hYbEVDK25KNkVxZW5hSzJ0NExCWE1lM0ErSy9HMkJWWFhkdE9yNFBRPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctd2FzbTMyLXdhc2kiOiBbIkByb2xsZG93bi9iaW5kaW5nLXdhc20zMi13YXNpQDEuMC4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvY29yZSI6ICIxLjEwLjAiLCAiQGVtbmFwaS9ydW50aW1lIjogIjEuMTAuMCIsICJAbmFwaS1ycy93YXNtLXJ1bnRpbWUiOiAiXjEuMS40IiB9LCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItKzF4YzlYNDVsOHVmc0JBbTZHanZ4MnFEUklZOWxUVnQwY2dXTmNKKzFnZGhYdmtieGVQQTYweVJUd1NUdVhMMDlDTWh5Sm1qcFY3RTNOb3l4YnFGUVE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjIjogWyJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjQDEuMC4xIiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi0xRCtVcVpkZm51UitKeTFHZ01Kd2k4NWJENDBIMjF1Tm1PUFJXUWh3NG9SU3VvbFovQjVyaXhaNDVESzJLWE9UQ3ZtVkNlY2F1V2dFaGJ3OGJJN3RPdz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLXdpbjMyLXg2NC1tc3ZjIjogWyJAcm9sbGRvd24vYmluZGluZy13aW4zMi14NjQtbXN2Y0AxLjAuMSIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLUlOQXljYVd1aGxPSzN3azRtUkhHc2Rnd1lXbWQ5Y0NoZFBkRTlid1dteTZybjlWcVZOWU5GR2hPZFhyb2ZYVXh3SEluY1NpUE5iOHRObThrbkRWSWVRPT0iXSwKCiAgICAiQHJvbGxkb3duL3BsdWdpbnV0aWxzIjogWyJAcm9sbGRvd24vcGx1Z2ludXRpbHNAMS4wLjEiLCAiIiwge30sICJzaGE1MTItMmo5Ykd0NUpoOGhqK3ZQdGd6UHRsNzJqMHlSeEhBeXVtb282VE5mQWpzTEIwNFV0cFN2UGJQY0RjQk14ejduKzlDWUIwYzFHeFFGeFlSZzJqaW1xR3c9PSJdLAoKICAgICJAc3RhbmRhcmQtc2NoZW1hL3NwZWMiOiBbIkBzdGFuZGFyZC1zY2hlbWEvc3BlY0AxLjEuMCIsICIiLCB7fSwgInNoYTUxMi1sMmFGeTVqQUxobmlHNUhncXJENmpYTGkvclVXckt2cU4vcUp4NnlvSnNnS2hibFZkK2lxcVU0UkNYYXZtL2pQaXR5RG81VEN2S01ucGpLbk9yaXkwdz09Il0sCgogICAgIkBzd2MvaGVscGVycyI6IFsiQHN3Yy9oZWxwZXJzQDAuNS4xNSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi44LjAiIH0gfSwgInNoYTUxMi1KUTVUdU1pNDVPd2k0L0JJTUFKQm9TUW9PSnUxMm9Pay9nQURxbGNVTDlKRWRIQjh2eWpVU3N4cWVOWG5tWEhqWUtNaTJXY1l0ZXpHRUVocVVJL0UyZz09Il0sCgogICAgIkB0YWJieV9haS9oaWpyaS1jb252ZXJ0ZXIiOiBbIkB0YWJieV9haS9oaWpyaS1jb252ZXJ0ZXJAMS4wLjUiLCAiIiwge30sICJzaGE1MTItcjViQ2xLcmNJdXNEb28wNDlkU0w4Q2F3bkhSNm1SZER3aGxRdUlnWlJOdHk2OHEweDhrM0xmMUJ0UEFNeFJmL0dnbkhCbklPNHVqZDMrR1FkTFd6eFE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvbm9kZSI6IFsiQHRhaWx3aW5kY3NzL25vZGVANC4zLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvcmVtYXBwaW5nIjogIl4yLjMuNSIsICJlbmhhbmNlZC1yZXNvbHZlIjogIl41LjIxLjAiLCAiaml0aSI6ICJeMi42LjEiLCAibGlnaHRuaW5nY3NzIjogIjEuMzIuMCIsICJtYWdpYy1zdHJpbmciOiAiXjAuMzAuMjEiLCAic291cmNlLW1hcC1qcyI6ICJeMS4yLjEiLCAidGFpbHdpbmRjc3MiOiAiNC4zLjAiIH0gfSwgInNoYTUxMi1hRmI0Z1VoRk9nZGg5QVhvNEl6QkVPekJra0F4bTlWaWd3REpuTUlZdjNsY2ZYQ0pWZXNOZmJFYUJsNEJOZ1ZSeWlkOTJBbWR2aXF3QlVCUktTZVkzZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZSI6IFsiQHRhaWx3aW5kY3NzL294aWRlQDQuMy4wIiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQHRhaWx3aW5kY3NzL294aWRlLWFuZHJvaWQtYXJtNjQiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtZGFyd2luLXg2NCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtZnJlZWJzZC14NjQiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybS1nbnVlYWJpaGYiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybTY0LWdudSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtbXVzbCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LWdudSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LW11c2wiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLXdhc20zMi13YXNpIjogIjQuMy4wIiwgIkB0YWlsd2luZGNzcy9veGlkZS13aW4zMi1hcm02NC1tc3ZjIjogIjQuMy4wIiwgIkB0YWlsd2luZGNzcy9veGlkZS13aW4zMi14NjQtbXN2YyI6ICI0LjMuMCIgfSB9LCAic2hhNTEyLUY3SFpHQmVOOUkwL0F1dUpTNVB3Y0Q4eGF5eDVyaTVHaGpZVURCRVZZVWtleHlBL2dpd2JETmpSVnJ4U2V6RTNUMjUwT1UySy93cC9sdFd4M1VPZWZnPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWFuZHJvaWQtYXJtNjQiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1hbmRyb2lkLWFybTY0QDQuMy4wIiwgIiIsIHsgIm9zIjogImFuZHJvaWQiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVRKUGlxNjd0S2xMdU9iUDZSa3d2VkdEb3hDTUJWdERnS2tMZmEvdXlqNy9GeXh2UXdIUytVT25WclhYZ2JFc2ZVYU1naVZ2QzRLYkpuUnIyNmhvNE5nPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NCI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NEA0LjMuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLW9NTi9XWlJiK1NPMzdCbVVFbEVnZUVXdVU4RS9IWFJraU9EeEp4TGUxVVRIVlhMcmRWU2dmYUpWN3BTbGhSR01TT2lYTHV4VElqZnNGM3dZdno4Y2dRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi14NjQiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1kYXJ3aW4teDY0QDQuMy4wIiwgIiIsIHsgIm9zIjogImRhcndpbiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLU42Q1VtdTRhNmJLVkFEZnc3N3AraXc2WWQ5UTNPQmhlMHZlYURYK1FhemZ1VllsUXNIZkRneEJyc2pRL0lXK3p5d0w4bVRyTmQwU2RKVC96Z3R2TWRBPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWZyZWVic2QteDY0IjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtZnJlZWJzZC14NjRANC4zLjAiLCAiIiwgeyAib3MiOiAiZnJlZWJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLXpETDVoQmtRZEg1QzZNcHFiSzNnUUFnUDgwdHNNd1NJMjZ2ak96akp0TkNNVW8wbEZnT0l0ekhLQkl1cE9aTlF4dDNvdVBIN1JQaHZOaGlUZkNlNUNRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybS1nbnVlYWJpaGYiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC1hcm0tZ251ZWFiaWhmQDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItUjA2SGROaTdBN09Fb01zZjZkNHRqWjcxUkNXblpRUEhqMm1ub3RTRlVSak5MZEJDK2NJZ1hRN2w4MUNxZW9pUWZ0amY2T09ibHhYTUluTWdOMlZ6TUE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtZ251IjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtZ251QDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1xVEpIRUxYOGpldGpoUlFIQ0xpbGtWTG15YnB6TlFBdGFJL2dhb1ZvaWRuL3VmYk5EYkFvOEtsSzJKK3lQb2M4d1F4dkR4Q21oLzVscjhuQzErbFRiZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC1hcm02NC1tdXNsIjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtbXVzbEA0LjMuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItWjZzdWtpUXNuZ25XTytsMzlYNHBQYmlXVDgxSUMrUExLRitQSHhJbHlaYkdOYjlNT0RmWWxYRVZsRnZlajVCT1pJbldYMDFrVnl6ZUx2SHNYaGZjelE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LWdudSI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LXg2NC1nbnVANC4zLjAiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1EUk5kUVJwU0d6UkdmQVJWdVZreHZNOFExMm5oMTlsNEJGL0c3ekdBMW9lKzl3Y0M2c2FGQkhUSVNycEljS3poaVh0U3JsU3JsdUNmdk11bGVkb0NUUT09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC14NjQtbXVzbCI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LXg2NC1tdXNsQDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItWjBJQURiRG84Ymg2STdoMklRTXg2MDFBZFhCTGZGcEVkVW90ZnQ4NmV2ZC84WlBmbFplOUNPUE84UTF2dytwZkxXSVVvOXpOL0pHWnZ3dUFKcWR1cWc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kiOiBbIkB0YWlsd2luZGNzcy9veGlkZS13YXNtMzItd2FzaUA0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAZW1uYXBpL2NvcmUiOiAiXjEuMTAuMCIsICJAZW1uYXBpL3J1bnRpbWUiOiAiXjEuMTAuMCIsICJAZW1uYXBpL3dhc2ktdGhyZWFkcyI6ICJeMS4yLjEiLCAiQG5hcGktcnMvd2FzbS1ydW50aW1lIjogIl4xLjEuNCIsICJAdHlieXMvd2FzbS11dGlsIjogIl4wLjEwLjEiLCAidHNsaWIiOiAiXjIuOC4xIiB9LCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItSE5aR09VeEVtRWxrc1lSN1M2c0M1alRlTkdwb2JBc3k5dTdHdTBBc2tKOC8yMEZSOUdxZWJVeUIrSEJjVS9heDZCSHVpdUppK09kYTRCK1lYNkgxeUE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2luMzItYXJtNjQtbXN2YyI6IFsiQHRhaWx3aW5kY3NzL294aWRlLXdpbjMyLWFybTY0LW1zdmNANC4zLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVBlK1JQVlRpMVQrcXltdXVScGNkdndTVlpqbmxsL2Y3bjhnQnhNTWgzeExUY3RNREtxcGRmR2ltYk15aW9xdExoVVlaeGRKOXdHTmhWN01LSHZnWnNRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLXdpbjMyLXg2NC1tc3ZjIjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtd2luMzIteDY0LW1zdmNANC4zLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1NdnJmMmtYVy95ZVcvT1RlelpsQ0dPaXJYUmNVdUxJQngvNVkxMkJhUE03d0pvcnlHNmRmUy9OSkw4YUJQcXRURXgvVm00VDR2S3pGVWNLRFQrVEtVQT09Il0sCgogICAgIkB0YWlsd2luZGNzcy9wb3N0Y3NzIjogWyJAdGFpbHdpbmRjc3MvcG9zdGNzc0A0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYWxsb2MvcXVpY2stbHJ1IjogIl41LjIuMCIsICJAdGFpbHdpbmRjc3Mvbm9kZSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUiOiAiNC4zLjAiLCAicG9zdGNzcyI6ICJeOC41LjEwIiwgInRhaWx3aW5kY3NzIjogIjQuMy4wIiB9IH0sICJzaGE1MTItSm0wNVRqeCs5eUNMR3Y1cXcxYys4NFBzZHM4TW55ckVRWUNCK0ZGazJsZ0dpVWpsUnFkeGtlNG1WVHVZcmoyeG5WWnFLaW0yQXByNXlTdVFSWUF3L3c9PSJdLAoKICAgICJAdHlieXMvd2FzbS11dGlsIjogWyJAdHlieXMvd2FzbS11dGlsQDAuMTAuMiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi40LjAiIH0gfSwgInNoYTUxMi1Sb0J2SjJYMHd1S2xXRklqcndmZkd3MUlxWkhLUXF6SWNoS2FhZFpaZm5OcHNBWXAybU0waDM2SnRQQ2pOREFIR2dZZXovMTV1TUJwZkd3Y2hoaU1nZz09Il0sCgogICAgIkB0eXBlcy9jaGFpIjogWyJAdHlwZXMvY2hhaUA1LjIuMyIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAdHlwZXMvZGVlcC1lcWwiOiAiKiIsICJhc3NlcnRpb24tZXJyb3IiOiAiXjIuMC4xIiB9IH0sICJzaGE1MTItTXc1NThvZUE5ZkZidjY1L3k0bUh0WERzOWJQbkZNWkFML2p4ZFBGVXBPSEhJWFg5MW1jZ0VIYlM1TGFocitwd1pGUjhBN0dRbGVSV2VJNmNHRkMyVUE9PSJdLAoKICAgICJAdHlwZXMvZGVlcC1lcWwiOiBbIkB0eXBlcy9kZWVwLWVxbEA0LjAuMiIsICIiLCB7fSwgInNoYTUxMi1jOWg5ZFZWTWlnTVBjNGJ3VHZDNWR4cXRxSlp3UVBlUHNXalBscFNPbm9qYm9yNnBHcWRrNTQxbGZBN0FxRlFyNXBCMUJSZHEwanVZOWRiODFCd3lGdz09Il0sCgogICAgIkB0eXBlcy9lc3RyZWUiOiBbIkB0eXBlcy9lc3RyZWVAMS4wLjkiLCAiIiwge30sICJzaGE1MTItR2hkUGd5MWVsNC9JbVAwNVgwNVV3NGN3Mi9NOTNCQ1VtbkV2V1pOU3RsQ3pFS01FNEZraytZcG9BNU9pSE5RbW9TN0NhZmI4WGEzUHlhOG0xUXJ6ZWc9PSJdLAoKICAgICJAdHlwZXMvbm9kZSI6IFsiQHR5cGVzL25vZGVAMjIuMTkuMTkiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidW5kaWNpLXR5cGVzIjogIn42LjIxLjAiIH0gfSwgInNoYTUxMi1keWgveE8yRmg1YllyZldhYXFHclJRUUdrTmRtWXc2QW1hQVV2WWVVTU5UV1F0dmI3OTZpa0xkbVRjaFJtT2xPaUlKMVREWGZXZ1Z4MVFrVWxRNkhldz09Il0sCgogICAgIkB0eXBlcy9yZWFjdCI6IFsiQHR5cGVzL3JlYWN0QDE5LjIuMTUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiY3NzdHlwZSI6ICJeMy4yLjIiIH0gfSwgInNoYTUxMi1lUndjR05IdmUrRThxdEVRU1NSbDZ1cmgrckZvcDR2OGdtNk84ckd2MjVDb2RidkZkTGpBMXZWUTFLa2lGRTB3MFVQT25iOHREaUZLTDVscDBydFk1UT09Il0sCgogICAgIkB0eXBlcy9yZWFjdC1kb20iOiBbIkB0eXBlcy9yZWFjdC1kb21AMTkuMi4zIiwgIiIsIHsgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJAdHlwZXMvcmVhY3QiOiAiXjE5LjIuMCIgfSB9LCAic2hhNTEyLWpwMkwvZVk2Zm4rS2dWVlFBT3FZSXRiRjBWWS9ZQXBlNU16MkYwYXlrU084Z3gzMWJZQ1p5dlNlWXhDSEt2ekhHNWVaamMrenlhUzVCckJXeWEyK2tRPT0iXSwKCiAgICAiQHZpdGVzdC9leHBlY3QiOiBbIkB2aXRlc3QvZXhwZWN0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBzdGFuZGFyZC1zY2hlbWEvc3BlYyI6ICJeMS4xLjAiLCAiQHR5cGVzL2NoYWkiOiAiXjUuMi4yIiwgIkB2aXRlc3Qvc3B5IjogIjQuMS42IiwgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAiY2hhaSI6ICJeNi4yLjIiLCAidGlueXJhaW5ib3ciOiAiXjMuMS4wIiB9IH0sICJzaGE1MTItN0VIRHF1UHRoQUxTVjBqaGhqZ0VXOEZYYXZpTXg3clNxdThXNm9xQ29BdU9oS292ODE0UDk5UURWMXB4TUEzUVB2MjFZdWR2Sm5nSWhqck5JNG9wTGc9PSJdLAoKICAgICJAdml0ZXN0L21vY2tlciI6IFsiQHZpdGVzdC9tb2NrZXJANC4xLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHZpdGVzdC9zcHkiOiAiNC4xLjYiLCAiZXN0cmVlLXdhbGtlciI6ICJeMy4wLjMiLCAibWFnaWMtc3RyaW5nIjogIl4wLjMwLjIxIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIm1zdyI6ICJeMi40LjkiLCAidml0ZSI6ICJeNi4wLjAgfHwgXjcuMC4wIHx8IF44LjAuMCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIm1zdyIsICJ2aXRlIl0gfSwgInNoYTUxMi1NQ0ZjNjNjek1qRUluT2xjWTJjcFFDdkNOK0tnYkFuKzYweHU5Y01nUDRzS2FMQzVKTkFLdzdKSDhRZEFub0FDODhoVzFJaVNOWitHZ1ZYbE4xVWNNUT09Il0sCgogICAgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6IFsiQHZpdGVzdC9wcmV0dHktZm9ybWF0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRpbnlyYWluYm93IjogIl4zLjEuMCIgfSB9LCAic2hhNTEyLWg1U3hEL0l6TmhaWW5yU1pSc1VaUUlDK3ZEMEdZOGNVdnEwaXdzbWtGS2l4UkNLTExXcUNYYS9GSVE0UzFSK3NJK1BHb29qa0hzZE5yYlppTTlRcGd3PT0iXSwKCiAgICAiQHZpdGVzdC9ydW5uZXIiOiBbIkB2aXRlc3QvcnVubmVyQDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAicGF0aGUiOiAiXjIuMC4zIiB9IH0sICJzaGE1MTItbk9QQ21uMit5RDBaTm1LZHNYR3YvVXhNTVdiTXVLZUQ2R3lZbmNOd2RrWUR4cFF2clBTS1lqMnJXdURqQzJZNGI2dzZoamlwNWRCS0Z6RVV1WmUzdkE9PSJdLAoKICAgICJAdml0ZXN0L3NuYXBzaG90IjogWyJAdml0ZXN0L3NuYXBzaG90QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6ICI0LjEuNiIsICJAdml0ZXN0L3V0aWxzIjogIjQuMS42IiwgIm1hZ2ljLXN0cmluZyI6ICJeMC4zMC4yMSIsICJwYXRoZSI6ICJeMi4wLjMiIH0gfSwgInNoYTUxMi1ZaHNkRTZ4QVZmVERtemp4TDJaRFV2amorWnNneU9LZStUZFF6cWtENzJ3SU9tSGthOE51R1E2TnBUTlp2OUQyWjYzZmJ3V0tKUGVWcEV3NEVRZ1l4dz09Il0sCgogICAgIkB2aXRlc3Qvc3B5IjogWyJAdml0ZXN0L3NweUA0LjEuNiIsICIiLCB7fSwgInNoYTUxMi1KRkt4TXg2dWRod0toL0xkbzI3MGUxN1FYNzEwdmd1bk1rdVBBdlhqSFN2QzZvcUxXQUhoVmhqZy9JNzFxMHUwQ0JTRXJJT0RWMUtqdjBGUU5TV2pkZz09Il0sCgogICAgIkB2aXRlc3QvdXRpbHMiOiBbIkB2aXRlc3QvdXRpbHNANC4xLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHZpdGVzdC9wcmV0dHktZm9ybWF0IjogIjQuMS42IiwgImNvbnZlcnQtc291cmNlLW1hcCI6ICJeMi4wLjAiLCAidGlueXJhaW5ib3ciOiAiXjMuMS4wIiB9IH0sICJzaGE1MTItRnhJWStVODFSM0xHS0N4YUhIRlJRNStnNi9pUmdHTG1lSFdkcDJBbWo0bGpRUnJFSVdIbVp5RGZEWUJSWmxweXFBN3FLeHRTOUREMWRoazhSblJJVlE9PSJdLAoKICAgICJhY29ybiI6IFsiYWNvcm5AOC4xNi4wIiwgIiIsIHsgImJpbiI6IHsgImFjb3JuIjogImJpbi9hY29ybiIgfSB9LCAic2hhNTEyLVVWSnlFOU10dE9zQlFJREt3MXNrYjluQXdRdVI1d3VHRDMrODJLNkpnSmxtL1krS0k5Mm9Oc01OR1pDWWREc1Z0UkhTYWswcGNWNURubzUrNGpoOXN3PT0iXSwKCiAgICAiYW5zaS1yZWdleCI6IFsiYW5zaS1yZWdleEA1LjAuMSIsICIiLCB7fSwgInNoYTUxMi1xdUpRWGxUU1VHTDJMSDlTVVhvOFZ3c1k0c29hbmhnbzZMTlNtODRFMUxCY0U4czNPMHdwZGlSenlSOXovWlpKTWxNV3YzN3FPT2I5cGRKbE1VRUtGUT09Il0sCgogICAgImFuc2ktc3R5bGVzIjogWyJhbnNpLXN0eWxlc0A0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjb2xvci1jb252ZXJ0IjogIl4yLjAuMSIgfSB9LCAic2hhNTEyLXpiQjlyQ0pBVDFyYmppVkRiMmhxS0ZITllMeGd0azhOVVJ4WjNJWndEM0Y2TnR4YlhaUUNublNpMUxreCtJRG9oZFBsRnAyMjJ3VkFMSWhlWkpRU0VnPT0iXSwKCiAgICAiYXNzZXJ0aW9uLWVycm9yIjogWyJhc3NlcnRpb24tZXJyb3JAMi4wLjEiLCAiIiwge30sICJzaGE1MTItSXppOFJRY2ZmcUNlTlZnRmlnS2xpMXNza2xJYnBIbkNZYzZBa25YR1lvQjZnckpxeWVieTdqdjEySlVRZ21UQW5JRG5iY2sxdXhrc1Q0ZHpOM1BXQkE9PSJdLAoKICAgICJiYXNlbGluZS1icm93c2VyLW1hcHBpbmciOiBbImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZ0AyLjEwLjMxIiwgIiIsIHsgImJpbiI6IHsgImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZyI6ICJkaXN0L2NsaS5janMiIH0gfSwgInNoYTUxMi1NdWpZTzNlUDcydXZtU0UwaTR3bHRzb2RSZklwWkFUUDNqdnpSTlJHR3hneklkN2FWb2NWSkpWM25mMDFxbnp6S0ZHeFFWQzlicFd4bDVjanhUci83UT09Il0sCgogICAgImJ1ZmZlci1mcm9tIjogWyJidWZmZXItZnJvbUAxLjEuMiIsICIiLCB7fSwgInNoYTUxMi1FK1hRQ1J3U2JhYWlDaHR2Nms2RHdnYytieCtCczZ2dUtKSEhsNWtveC9CYUtiaGlYenFRT3dLNGNPMjJ5RWxHcDJPQ21qd1ZoVDNIbXhneVBHbkpmUT09Il0sCgogICAgImNhbml1c2UtbGl0ZSI6IFsiY2FuaXVzZS1saXRlQDEuMC4zMDAwMTc5MyIsICIiLCB7fSwgInNoYTUxMi1pd1NzWVdhQ09vaDI2Y1Y4TndOUlZpSGxyZlV2WXNIRGZSVmNidG13MEtnNlBKSVpaWHdNa2oxNDQyRllMQkdrZVVmMWp1QXNVM0RUZnhXNTc5bXJQQT09Il0sCgogICAgImNoYWkiOiBbImNoYWlANi4yLjIiLCAiIiwge30sICJzaGE1MTItTlVQUmx1T2ZPaVRLQkt2V1B0U0Q0UGhGdldDcU9pMEJHU3ROV3M1N1g5anM3WEdUcHJTbUZvejVGMHRXaFI0V1BqTmVSOWpYcWRDNy9VcFNKVG5sUmc9PSJdLAoKICAgICJjaGFsayI6IFsiY2hhbGtANC4xLjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiYW5zaS1zdHlsZXMiOiAiXjQuMS4wIiwgInN1cHBvcnRzLWNvbG9yIjogIl43LjEuMCIgfSB9LCAic2hhNTEyLW9LbmJoRnlSSVhwVXVlejhpQk1teUVhNG5iajRJT1F5dWhjL3d5OWtZNy9XVlBjd0lPOVZBNjY4UHU4UmtPNyswRzc2U0xST2V5dzlDcFEwNjFpNG1BPT0iXSwKCiAgICAiY2xpZW50LW9ubHkiOiBbImNsaWVudC1vbmx5QDAuMC4xIiwgIiIsIHt9LCAic2hhNTEyLUlWM091MGpTTXpacmQzcFo0OG5Ma1Q5REE3QWcxcG5QemFpUWhwVzdjM1JiY3FxenZ6elZ1K0w4Z2ZxTXAvOElNMk1RdFNpcWFDeHJyY2Z1OEk4ck1BPT0iXSwKCiAgICAiY2xpdWkiOiBbImNsaXVpQDguMC4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInN0cmluZy13aWR0aCI6ICJeNC4yLjAiLCAic3RyaXAtYW5zaSI6ICJeNi4wLjEiLCAid3JhcC1hbnNpIjogIl43LjAuMCIgfSB9LCAic2hhNTEyLUJTZU5ueXVzNzVDNC8vTlE5Z1F0MS9jc1RYeW8vOFNiK2FmTEFrekFwdEZ1TXNvZDlIRm9rR051ZFpwaS9vUVY3M2huVksrc1IrNVBWUk1kK0RyN1lRPT0iXSwKCiAgICAiY2xzeCI6IFsiY2xzeEAyLjEuMSIsICIiLCB7fSwgInNoYTUxMi1lWW0wUVdCdFVyQldaV0cwZDM4Nk9HQXcxNlo5OTVQaU9WbzJCN2JqV1NiSGVkR2w1ZTBaV2FxNjVrT0dnVVNOZXNFSURrQjlJU2JUZy9KSzlkaENaQT09Il0sCgogICAgImNvbG9yLWNvbnZlcnQiOiBbImNvbG9yLWNvbnZlcnRAMi4wLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiY29sb3ItbmFtZSI6ICJ+MS4xLjQiIH0gfSwgInNoYTUxMi1SUkVDUHNqN2l1L3hiNW9LWWNzRkhTcHBGTm5zai81Mk9WVFJLYjR6UDVvblh3VkYzelZtbVRvTmNPZkdDK0NSRHBmSy9VNTg0Zk1nMzhaSENhRWxLUT09Il0sCgogICAgImNvbG9yLW5hbWUiOiBbImNvbG9yLW5hbWVAMS4xLjQiLCAiIiwge30sICJzaGE1MTItZE95KzNBdVczYTJ3TmJaSEl1TVpwVGNnakd1TFUvdUJML3ViY1pGOU9YYkRvOGZmNE84eVZwNUJmMGVmUzh1RW9ZbzVxNEZ4N2RZOU9nUUdYZ0FzUUE9PSJdLAoKICAgICJjb21tYW5kZXIiOiBbImNvbW1hbmRlckAyLjIwLjMiLCAiIiwge30sICJzaGE1MTItR3BWa21NOHZGMnZRVWtqMkx2Wm1EMzVKeGVKT0xDd0o5Y1VrdWd5azJudWhidjMrbUp2cExZWXQrMCtVU014RStvaitleS9sSkVuaFp3NzV4L09NY1E9PSJdLAoKICAgICJjb25jdXJyZW50bHkiOiBbImNvbmN1cnJlbnRseUA5LjIuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjaGFsayI6ICI0LjEuMiIsICJyeGpzIjogIjcuOC4yIiwgInNoZWxsLXF1b3RlIjogIjEuOC4zIiwgInN1cHBvcnRzLWNvbG9yIjogIjguMS4xIiwgInRyZWUta2lsbCI6ICIxLjIuMiIsICJ5YXJncyI6ICIxNy43LjIiIH0sICJiaW4iOiB7ICJjb25jIjogImRpc3QvYmluL2NvbmN1cnJlbnRseS5qcyIsICJjb25jdXJyZW50bHkiOiAiZGlzdC9iaW4vY29uY3VycmVudGx5LmpzIiB9IH0sICJzaGE1MTItZnNmck8wTXhWNjRabm95OC9sMXZWSWpqSGEyOVNaeXlxUGdRQndoaURjYVc4d0pjMlczWFdWT0d4NE0zb0pCbnYvemRVWklJcDFnRGVTOThHelA4Tmc9PSJdLAoKICAgICJjb252ZXJ0LXNvdXJjZS1tYXAiOiBbImNvbnZlcnQtc291cmNlLW1hcEAyLjAuMCIsICIiLCB7fSwgInNoYTUxMi1LdnA0NTlIclYyRkVKMUNBc2kxS3UrTVkza2FzSDE5VEZ5a1R6MnhXbU1lcTZiazJOVTNYWHZmSitRNjFtMHhrdFd3dCsxSFNZZjNKWnNUbXMzYVJKZz09Il0sCgogICAgImNzc3R5cGUiOiBbImNzc3R5cGVAMy4yLjMiLCAiIiwge30sICJzaGE1MTItejFIR0tjWXkyeEE4QUdRZndybjBQQXkrUEI3WC9HU2ozVVZKVzlxS3luNDN4V2ErZ2w1blhtVTRxcUxNUnpXVkxGQzhLdXNVWDhULzBrQ2lPWXBBSVE9PSJdLAoKICAgICJkYXRlLWZucyI6IFsiZGF0ZS1mbnNANC4yLjEiLCAiIiwge30sICJzaGE1MTItMzdSaFNkeGFHMXN1ZW42VkRDemE2ck5yUWZvb3lRaDU3SEZWUHdRR0VxMlFXbGlWTHpQUVo4T2EwMTd3ZU91K0haQ256STdOM1BmL3d5b0JLZkVxckE9PSJdLAoKICAgICJkYXRlLWZucy1qYWxhbGkiOiBbImRhdGUtZm5zLWphbGFsaUA0LjEuMC0wIiwgIiIsIHt9LCAic2hhNTEyLWhUSVAveit0K3FLd0JEY21tc25taldUZHV4Q2crNUtmZHFXUXZiMlgvOEM5K2tuWVk2ZXBOL3BmeGREdXlWbFNWZUZ6MHNNNWVFZndJVVE3MFU0Y2tnPT0iXSwKCiAgICAiZGV0ZWN0LWxpYmMiOiBbImRldGVjdC1saWJjQDIuMS4yIiwgIiIsIHt9LCAic2hhNTEyLUJ0ajJCT09PODNvM1d5SDU5ZThNZ1hzeEVRVmNhcmtVT3BFWXJ1YkIwdXJ3bk4xMHlRMzY0cnNpQnlVMTFuWmxxV1labTA1aS9vZjdpbzRtemloQnRRPT0iXSwKCiAgICAiZW1vamktcmVnZXgiOiBbImVtb2ppLXJlZ2V4QDguMC4wIiwgIiIsIHt9LCAic2hhNTEyLU1Tall6Y1dOT0EwZXdBSHB6ME14cFlGdndnNnlqeTFORzN4dGVvcXo2NDRWQ28vUlBnbnIxL0dHdCtpYzNpSlR6UThFdTNUZE0xNFNhd25WVW1HRTZBPT0iXSwKCiAgICAiZW5oYW5jZWQtcmVzb2x2ZSI6IFsiZW5oYW5jZWQtcmVzb2x2ZUA1LjIxLjUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZ3JhY2VmdWwtZnMiOiAiXjQuMi40IiwgInRhcGFibGUiOiAiXjIuMy4zIiB9IH0sICJzaGE1MTItbUxDTmJyUWxpMTFLMXlTVW11TnQ0WlVCM09wR0lEcTRxMnZUQlRmNWNMMmxwc1JqSTlRS3FTRDBuZGpXOEZ5dmNXL0pqNDZnTWU5c3l5SEFzdk1hL0E9PSJdLAoKICAgICJlcy1tb2R1bGUtbGV4ZXIiOiBbImVzLW1vZHVsZS1sZXhlckAyLjEuMCIsICIiLCB7fSwgInNoYTUxMi1uMjd6VFlNall1MWFqNE1qQ1d6U1A3RzlyNzV1dHNhb2M4bTYxd2VLK1c4Sk1CR0dReWJkNDNHc3RDWFozV05tU0Z0R1Q5d2k1OXFRVFc2bWhUUjVMUT09Il0sCgogICAgImVzYnVpbGQiOiBbImVzYnVpbGRAMC4yNS40IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGVzYnVpbGQvYWl4LXBwYzY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9hbmRyb2lkLWFybSI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvYW5kcm9pZC1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvYW5kcm9pZC14NjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2Rhcndpbi1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZGFyd2luLXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZnJlZWJzZC1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZnJlZWJzZC14NjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWFybSI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtYXJtNjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWlhMzIiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWxvb25nNjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LW1pcHM2NGVsIjogIjAuMjUuNCIsICJAZXNidWlsZC9saW51eC1wcGM2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtcmlzY3Y2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtczM5MHgiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbmV0YnNkLWFybTY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9uZXRic2QteDY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9vcGVuYnNkLWFybTY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9vcGVuYnNkLXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvc3Vub3MteDY0IjogIjAuMjUuNCIsICJAZXNidWlsZC93aW4zMi1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvd2luMzItaWEzMiI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvd2luMzIteDY0IjogIjAuMjUuNCIgfSwgImJpbiI6IHsgImVzYnVpbGQiOiAiYmluL2VzYnVpbGQiIH0gfSwgInNoYTUxMi04cGdqTFVjVWpjZ0RnKzJRNE5ZWG5QYm8vdm5jQVk0VW15YUNtMGpaZXZFUnFDSFpJYVd3ZEpIa2Y4WFF0dTRBeFNLQ2R2clViVDBYVXIxSWRaekk4UT09Il0sCgogICAgImVzY2FsYWRlIjogWyJlc2NhbGFkZUAzLjIuMCIsICIiLCB7fSwgInNoYTUxMi1XVWoycWx4YVF0TzRnNlBxNWMyOUdUY1dHRHlkOGl0TDh6VGxpcGdFQ3ozSmVzQWlpT0tvdGQ4SlU2b3RCM1BBQ2dHNnhrSlV5Vmhib01TK2JqZS9qQT09Il0sCgogICAgImVzdHJlZS13YWxrZXIiOiBbImVzdHJlZS13YWxrZXJAMy4wLjMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL2VzdHJlZSI6ICJeMS4wLjAiIH0gfSwgInNoYTUxMi03UlVLZlhnU01Na3p0Nlp1WG1xYXBPdXJMR1BQZmdqNmw5dVJaN2xSR29sdmsweTJ5b2NjMzVMZGN4S0M1UFFaZG4yRE1xaW9BUTJOb1djclRLbW02Zz09Il0sCgogICAgImV4cGVjdC10eXBlIjogWyJleHBlY3QtdHlwZUAxLjMuMCIsICIiLCB7fSwgInNoYTUxMi1rbnZ5ZWF1WWhxak9ZdlE2Nk16blNNczgzd21IckN5Y05FTjZBbysyQWVZRWZ4VUlrdWlWeGRFYTFxbEdFUEsrV2UzbjBUSGlEY2lZU3NDY2dXL0RvQT09Il0sCgogICAgImZkaXIiOiBbImZkaXJANi41LjAiLCAiIiwgeyAicGVlckRlcGVuZGVuY2llcyI6IHsgInBpY29tYXRjaCI6ICJeMyB8fCBeNCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbInBpY29tYXRjaCJdIH0sICJzaGE1MTItdEliWXRaYnVjT3MwQlJHcVBKa3NoSlVZZEwrU0RIN2RWTThnankrRVJwM1dBVWpMRUZKRSswMmthbnlIdHdqV09ud3JLWUJpd0FtTTBwNGtMSkFuWGc9PSJdLAoKICAgICJmc2V2ZW50cyI6IFsiZnNldmVudHNAMi4zLjMiLCAiIiwgeyAib3MiOiAiZGFyd2luIiB9LCAic2hhNTEyLTV4b0RmWCtmTDdmYUFUbmFnbVdQcGJGdHdoL1I3N1dtTU1xcUhHUzY1QzN2dkIwWUhyZ0YrQjFZbVozNDQxdE1qNW42M2swMjEyWE5vSnd6bGhmZlF3PT0iXSwKCiAgICAiZ2V0LWNhbGxlci1maWxlIjogWyJnZXQtY2FsbGVyLWZpbGVAMi4wLjUiLCAiIiwge30sICJzaGE1MTItRHlGUDNCTS8zWUhUUU9DVUwvdzBPWkhSMGxwS2VHcnhvdGNIV2NxTkVkbmx0cUZ3WFZmaEVCUTk0ZUlvMzRBZlFwbzByR2tpNGN5SWlmdFkwNmgyRmc9PSJdLAoKICAgICJncmFjZWZ1bC1mcyI6IFsiZ3JhY2VmdWwtZnNANC4yLjExIiwgIiIsIHt9LCAic2hhNTEyLVJiSjUvam1GY05OQ2NEVjVvOWVUbkJMSi9Ic3pXVjBQNzNiYytGZjRuUy9ySmorWWFTNklHeWlPTDBWb0JZWCtsMVdybDNrNjNoL0tySCtuaEowWHZRPT0iXSwKCiAgICAiaGFzLWZsYWciOiBbImhhcy1mbGFnQDQuMC4wIiwgIiIsIHt9LCAic2hhNTEyLUV5a0pUL1ExS2pUV2N0cHBnSUFnZlNPMHRLVnVaVWpoZ01yMTdrcVR1bU1sNkFmdjNFSVNsZVU3cVpVem9YREZUQUhUREM0Tk9vRy9aeFUzRXZsTVBRPT0iXSwKCiAgICAiaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQiOiBbImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50QDMuMC4wIiwgIiIsIHt9LCAic2hhNTEyLXp5bW01K3Urc0NzU1d5RDlxTmFlalYzREZ2aENLY2xLZGl6WWFKVXVIQTgzUkxqYjduU3VHbmRkQ0hHdjBoaytLWTdCTUFsc1dlSzRVZWc2RVY2WFFnPT0iXSwKCiAgICAiaml0aSI6IFsiaml0aUAyLjcuMCIsICIiLCB7ICJiaW4iOiB7ICJqaXRpIjogImxpYi9qaXRpLWNsaS5tanMiIH0gfSwgInNoYTUxMi1BQy83Sm9mSnZaR3JybmVXTmFFbkplT0xVeCtKbEd0N3ROYTB3WmlSUFQ0TVkxd21mS2p0Mis2TzJwMnV6Mitza2xsOE9aWm1KTU5xZWtlN2tLYk5nUT09Il0sCgogICAgImxpYnBob25lbnVtYmVyLWpzIjogWyJsaWJwaG9uZW51bWJlci1qc0AxLjEyLjQxIiwgIiIsIHt9LCAic2hhNTEyLWxzbU1tR1hCeFhJSy9WTUxFajBrTDZNdFVzMWtCR2oxblRDemk2emdRb0cxREV3cXd0MkRReUh4Y0x5a2NlSXhBbmZFM2h5YTdOdUloNlBwQzZTM2ZBPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzIjogWyJsaWdodG5pbmdjc3NAMS4zMi4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImRldGVjdC1saWJjIjogIl4yLjAuMyIgfSwgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAibGlnaHRuaW5nY3NzLWFuZHJvaWQtYXJtNjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1kYXJ3aW4tYXJtNjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1kYXJ3aW4teDY0IjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtZnJlZWJzZC14NjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1saW51eC1hcm0tZ251ZWFiaWhmIjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251IjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtbXVzbCI6ICIxLjMyLjAiLCAibGlnaHRuaW5nY3NzLWxpbnV4LXg2NC1nbnUiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtbXVzbCI6ICIxLjMyLjAiLCAibGlnaHRuaW5nY3NzLXdpbjMyLWFybTY0LW1zdmMiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy13aW4zMi14NjQtbXN2YyI6ICIxLjMyLjAiIH0gfSwgInNoYTUxMi1OWFlCemluTnJibGZyYVBHeXJiUG9EMTlDMWg5bGZJLzFtemdXWXZYVVRlNDE0R3ovWDFGRDJYQlpTWk03clJUck1BOEpMM090QWFHaWZySUtoUTV5UT09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1hbmRyb2lkLWFybTY0IjogWyJsaWdodG5pbmdjc3MtYW5kcm9pZC1hcm02NEAxLjMyLjAiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItWUs3L0NsVHQ0a0FLMHZvNnczWCtQbm0wRDJjZjJ2UEhiaE9YZG9OdGkxR2EwYWwxUDRUQlpod2pBVHZqTndMRUJDbkt2akpjMmpRZ0hYSDBORXdsQWc9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtZGFyd2luLWFybTY0IjogWyJsaWdodG5pbmdjc3MtZGFyd2luLWFybTY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVJ6ZUc5SnU1YmFnMkJ2MS9sd2xWSnZCRTNxNlR0WHNrZFpMTEN5Zmc1cHQrSEx6OUJxbElDTzdMWk03VkhOVFRuLzVQUmhIRkJTams1bGM0Y21zY1BRPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzLWRhcndpbi14NjQiOiBbImxpZ2h0bmluZ2Nzcy1kYXJ3aW4teDY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1VK1FzQnAybS9zMndxcFVZVC82d25sYWdkWmJ0WmRuZFNtdXQvTkpxbENjTUxUV3A1bXVDcklEK0s1VUo2anFEMkJGc2hlakNZWG5pUERiTmg3M1Y4dz09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1mcmVlYnNkLXg2NCI6IFsibGlnaHRuaW5nY3NzLWZyZWVic2QteDY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSkNUaWdlZEVrc1prM3RIVFR0aG5NZFZmR2Y2MUZreThKaTJFNFlqVVRFUVgxNHhpeS9sVHpYbnUxdndpWmUzYlllMHErU3BzU0gvQ1RlRFhLNldIaWc9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtLWdudWVhYmloZiI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LWFybS1nbnVlYWJpaGZAMS4zMi4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTIteDZybm5wUmEyR0wwelFPa3Q2cnRzM1lEUHpkdUxwV3Z3QUY2RU1oWEZWWlhENHRQckJrRUZxekdvd3pDc0lXc1BqcVNLK3R5TkVPRFVCWGVlVkhTa3c9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251IjogWyJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItMG5uTXlveU9MUkpYZmJNT2lsYVNSY0xIM0p3NXo5SEROR2ZUL2d3Q1BnYURqbngwaTh3N3ZCekZMRlIxZjZDTUxLRjhnVmJlYm1rVU4zZmEva1FKcFE9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtbXVzbCI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LWFybTY0LW11c2xAMS4zMi4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1VcFFrb2VucjRVSkV6Z1ZJWXBJODBsREZ2Um1QVmc2b3Fib05IZm9INENRSWZOQStIT3JaN01vN0taUDAyZEM2TGpnaFBRSmVCc3ZYaEpvZC93bklCZz09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtZ251IjogWyJsaWdodG5pbmdjc3MtbGludXgteDY0LWdudUAxLjMyLjAiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1WN1FyNTJJaFptZEtQVnIrVnR3OG8rV0xzUUpZQ1RkOGxvSWZwRGFNUldHVVpmQk9ZRUpleUpJa3FHSURNWlB3UHgyNHBVTWZ3U3h4SThwaHIvTWJPQT09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtbXVzbCI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LXg2NC1tdXNsQDEuMzIuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLWJZY0xwK1ZiMGF3c2lYZy84MHVDUmV6Q1lITmcxL2wzbXQwZ3pIbldWOVhQMVc1c0thNS9UQ2RHV2FSL3pCTTJQZUYvSGJzUXYvajJVUk5PaVZ1eFdnPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzLXdpbjMyLWFybTY0LW1zdmMiOiBbImxpZ2h0bmluZ2Nzcy13aW4zMi1hcm02NC1tc3ZjQDEuMzIuMCIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItOFNiQzhCUjQwcFM2YmFDTThzYnRZRFN3RVZRZDRKbEZUT2xhRDNnV0dIZlRoVGNBQm5OREJkYTZlVFplcWJvZmFsSUpoRngwcUt6Z0hKbWNQVG5HZHc9PSJdLAoKICAgICJsaWdodG5pbmdjc3Mtd2luMzIteDY0LW1zdmMiOiBbImxpZ2h0bmluZ2Nzcy13aW4zMi14NjQtbXN2Y0AxLjMyLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1BbXE5Qi9Tb1pZZERpMWtGcm9qbm9xUEx4WWhRNFdvNVhpTDhFVkpyVnNCOEFSb0MxUFdXNlZHdFQwV0tDZW1qeThhQytsb3VKbmpTN1UxOHgzYjA2UT09Il0sCgogICAgIm1hZ2ljLXN0cmluZyI6IFsibWFnaWMtc3RyaW5nQDAuMzAuMjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjIjogIl4xLjUuNSIgfSB9LCAic2hhNTEyLXZkMkY0WVV5RVhLR2NMSG9xK1RFeUNqeHVlU2VIbkZ4eXlqTnA4MHlnMFhWNHZVaG5EZXIvbHZ2bHFNL2FyQjViWFFONUsyLzNvaW55Q1J5eDhUMkNRPT0iXSwKCiAgICAibmFub2lkIjogWyJuYW5vaWRAMy4zLjEyIiwgIiIsIHsgImJpbiI6IHsgIm5hbm9pZCI6ICJiaW4vbmFub2lkLmNqcyIgfSB9LCAic2hhNTEyLVpCOVJILzM5cXBxNVZ1NlkrTm1VYUZoUVI2cHArTTJYdDc2WEJuRXdEYUdjVkFxaGx2eHJsM0IyYktTNUQzTkgzUVI3NnYzYVNyS2FGL0tpeTdsRXRRPT0iXSwKCiAgICAibmV4dCI6IFsibmV4dEAxNi4yLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQG5leHQvZW52IjogIjE2LjIuNiIsICJAc3djL2hlbHBlcnMiOiAiMC41LjE1IiwgImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZyI6ICJeMi45LjE5IiwgImNhbml1c2UtbGl0ZSI6ICJeMS4wLjMwMDAxNTc5IiwgInBvc3Rjc3MiOiAiOC40LjMxIiwgInN0eWxlZC1qc3giOiAiNS4xLjYiIH0sICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBuZXh0L3N3Yy1kYXJ3aW4tYXJtNjQiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy1kYXJ3aW4teDY0IjogIjE2LjIuNiIsICJAbmV4dC9zd2MtbGludXgtYXJtNjQtZ251IjogIjE2LjIuNiIsICJAbmV4dC9zd2MtbGludXgtYXJtNjQtbXVzbCI6ICIxNi4yLjYiLCAiQG5leHQvc3djLWxpbnV4LXg2NC1nbnUiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy1saW51eC14NjQtbXVzbCI6ICIxNi4yLjYiLCAiQG5leHQvc3djLXdpbjMyLWFybTY0LW1zdmMiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy13aW4zMi14NjQtbXN2YyI6ICIxNi4yLjYiLCAic2hhcnAiOiAiXjAuMzQuNSIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJAb3BlbnRlbGVtZXRyeS9hcGkiOiAiXjEuMS4wIiwgIkBwbGF5d3JpZ2h0L3Rlc3QiOiAiXjEuNTEuMSIsICJiYWJlbC1wbHVnaW4tcmVhY3QtY29tcGlsZXIiOiAiKiIsICJyZWFjdCI6ICJeMTguMi4wIHx8IDE5LjAuMC1yYy1kZTY4ZDJmNC0yMDI0MTIwNCB8fCBeMTkuMC4wIiwgInJlYWN0LWRvbSI6ICJeMTguMi4wIHx8IDE5LjAuMC1yYy1kZTY4ZDJmNC0yMDI0MTIwNCB8fCBeMTkuMC4wIiwgInNhc3MiOiAiXjEuMy4wIiB9LCAib3B0aW9uYWxQZWVycyI6IFsiQG9wZW50ZWxlbWV0cnkvYXBpIiwgIkBwbGF5d3JpZ2h0L3Rlc3QiLCAiYmFiZWwtcGx1Z2luLXJlYWN0LWNvbXBpbGVyIiwgInNhc3MiXSwgImJpbiI6IHsgIm5leHQiOiAiZGlzdC9iaW4vbmV4dCIgfSB9LCAic2hhNTEyLXFPVmdLSmcxK0F0MTVOcGVVUCtlSmdDSHZUQ2dYc29nd2VxODdSaS9JeDdQa3FRSGc0c2RhWG1TRnFLbGdhSVhFNGtXMGcyNUxFNjhXODdVQU5sSHR3PT0iXSwKCiAgICAib2J1ZyI6IFsib2J1Z0AyLjEuMSIsICIiLCB7fSwgInNoYTUxMi11VHFGOU11UHJhQVErSXNuUGYzNjZSRzRjUDlSdFVpN01MTzFOM0tFYyt3YjBhNnlLcGVMMGxtazJJQjFqWTVLSFBBbFRjNlQvSlJkQy9ZcXhITndrUT09Il0sCgogICAgInBhdGhlIjogWyJwYXRoZUAyLjAuMyIsICIiLCB7fSwgInNoYTUxMi1XVWpHY0FxUDFnUWFjb1FlK09CSnNGQTdMZDREeVh1VUlqWjVjYzc1Y0xIdko3ZHROc1R1Z3BoeElBRHdzcFMrQXJhQVVlUENLclNWdFBMRmovRjg4dz09Il0sCgogICAgInBpY29jb2xvcnMiOiBbInBpY29jb2xvcnNAMS4xLjEiLCAiIiwge30sICJzaGE1MTIteGNlSDJzbmh0YjVNOWxpcURzbUV3NTZsZTM3Nm1UWmtFWC9qRWIvUnhORnllZ051bDdlTnNsQ1hQOUZEai9MY3UwWDhLRXlNY2VQMm50cGFIckRFVkE9PSJdLAoKICAgICJwaWNvbWF0Y2giOiBbInBpY29tYXRjaEA0LjAuNCIsICIiLCB7fSwgInNoYTUxMi1RUDg4QkFLdk1hbS8zTnhINnZqMm8yMVI2TWp4WlVBZDZubHdBUy9wbkd2TjlJVkxvY0xIeEdZSXpGaGc2ZlVRKzV0aDZQNGR2NGVXOWpYM0RTSWo3QT09Il0sCgogICAgInBvc3Rjc3MiOiBbInBvc3Rjc3NAOC41LjE1IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIm5hbm9pZCI6ICJeMy4zLjEyIiwgInBpY29jb2xvcnMiOiAiXjEuMS4xIiwgInNvdXJjZS1tYXAtanMiOiAiXjEuMi4xIiB9IH0sICJzaGE1MTItRmZSOHNqZDRlbTJUNmZiM0kyTXdBSlU3SFdWTXI5emJhK2VubVFlZVdGZkNibStVT0MvMFg0RFM4WHRwVVRNd1dNR2JqS1lQN3hqZk5la3p5R21CM0E9PSJdLAoKICAgICJyZWFjdCI6IFsicmVhY3RAMTkuMi42IiwgIiIsIHt9LCAic2hhNTEyLXNmV0dHZmF2aTB4cjhQZzBzVnN5SE1BT3ppVllLZ1BMTnJTN2lnK2l2TU5iM3diQ0J3M0t4dGZsc0dCQXdEM2dZUWxFL0FFWnNUTGdUb1JyU0NqYjBRPT0iXSwKCiAgICAicmVhY3QtZGF5LXBpY2tlciI6IFsicmVhY3QtZGF5LXBpY2tlckA5LjE0LjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGRhdGUtZm5zL3R6IjogIl4xLjQuMSIsICJAdGFiYnlfYWkvaGlqcmktY29udmVydGVyIjogIjEuMC41IiwgImRhdGUtZm5zIjogIl40LjEuMCIsICJkYXRlLWZucy1qYWxhbGkiOiAiNC4xLjAtMCIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJyZWFjdCI6ICI+PTE2LjguMCIgfSB9LCAic2hhNTEyLXRCYW9EV2pQd2UwTTVwR3J1bTRIMFNSNkx5aytCTzlvSG5wOUpiS3BHS1cybWxyYU5QZ1A5Qk1mc2c1cFdwd3Jzc0FSbWVxazdZQmwyb1h1dFpUYUhBPT0iXSwKCiAgICAicmVhY3QtZG9tIjogWyJyZWFjdC1kb21AMTkuMi42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInNjaGVkdWxlciI6ICJeMC4yNy4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgInJlYWN0IjogIl4xOS4yLjYiIH0gfSwgInNoYTUxMi0wcHJNSStodkJiUGpzV254REx4bENHeU04UE42VXVXakVVQ1ltWmhPNjd4SVY5WGFzYS9yL3ZEbnErWHlxNExvMjdnOFFTYk81WXpBUnUwRDFTcHMzZz09Il0sCgogICAgInJlcXVpcmUtZGlyZWN0b3J5IjogWyJyZXF1aXJlLWRpcmVjdG9yeUAyLjEuMSIsICIiLCB7fSwgInNoYTUxMi1mR3hFSTcrd3NHOXhydmRqc3JsbUwyMk9NVFRpSFJ3QU1yb2lFZU1ncThnem9MQy9QUXI3UnNSRFNUTFVnL2JaQVp0RitUVklrSGM2LzRSSUtydWkrUT09Il0sCgogICAgInJlc2VsZWN0IjogWyJyZXNlbGVjdEA1LjIuMCIsICIiLCB7fSwgInNoYTUxMi1BZ1ozVU9abTNZbmRmcko0T1lqZ3JUN2JtQ20vMWlxa2p2RWZIL29ZanpoNlBEMnF3NFF1VDNqam5YSXJwZHQ0TVRwTVhjbE1UM2xYYm1SWStYUmFrdz09Il0sCgogICAgInJvbGxkb3duIjogWyJyb2xsZG93bkAxLjAuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAb3hjLXByb2plY3QvdHlwZXMiOiAiPTAuMTMwLjAiLCAiQHJvbGxkb3duL3BsdWdpbnV0aWxzIjogIl4xLjAuMCIgfSwgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQHJvbGxkb3duL2JpbmRpbmctYW5kcm9pZC1hcm02NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1kYXJ3aW4tYXJtNjQiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1mcmVlYnNkLXg2NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmIjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LWFybTY0LWdudSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsIjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXBwYzY0LWdudSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1zMzkweC1nbnUiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctbGludXgteDY0LWdudSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC14NjQtbXVzbCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1vcGVuaGFybW9ueS1hcm02NCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy13YXNtMzItd2FzaSI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjIjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLXdpbjMyLXg2NC1tc3ZjIjogIjEuMC4xIiB9LCAiYmluIjogeyAicm9sbGRvd24iOiAiYmluL2NsaS5tanMiIH0gfSwgInNoYTUxMi1YMEtRSGxqTm5Fa1dOcXFpejl6SnJHdW5oMUIwSGdPeExYdm5GcENPY2FkemN5NXFvaFozdHFNRVVnMDB2bmNvUm92WHVLM1pxQ1Q5S25uS3pvSW5GUT09Il0sCgogICAgInJ4anMiOiBbInJ4anNANy44LjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuMS4wIiB9IH0sICJzaGE1MTItZGhLZjkwM1UvUFFaWTZib05OdEFHZFdiRzg1V0FialQvMXhZb1pJQzdGQVkweVdhcE9CUVZzVnJEbDU4Vzg2Ly9lMVZwTU5CdFJWNE1hWGZkTXlTRkE9PSJdLAoKICAgICJzY2hlZHVsZXIiOiBbInNjaGVkdWxlckAwLjI3LjAiLCAiIiwge30sICJzaGE1MTItZU52K1dyVmJLdTFmM3ZiWUpUL3h0aUY1c3lBNUhQSU10ZjlJZ1kvbktnMHNXcXpBVUV2cVkveG03T2NaYy9xYWZMeC9pTzlGZ09tZVNBcDR2NXRpL1E9PSJdLAoKICAgICJzZW12ZXIiOiBbInNlbXZlckA3LjguMCIsICIiLCB7ICJiaW4iOiB7ICJzZW12ZXIiOiAiYmluL3NlbXZlci5qcyIgfSB9LCAic2hhNTEyLUFjTTdkVi81dWw0RWVrb1EyOUFnbTV2cmk4Sk5xUnlqMzlvMHFwWDZ2REYyR1pydHV0Wmw1UndnRDFYblpqaVRBZm5jc0poTUk0OFFRSDNzTjg3WU5BPT0iXSwKCiAgICAic2hhcnAiOiBbInNoYXJwQDAuMzQuNSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAaW1nL2NvbG91ciI6ICJeMS4wLjAiLCAiZGV0ZWN0LWxpYmMiOiAiXjIuMS4yIiwgInNlbXZlciI6ICJeNy43LjMiIH0sICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtZGFyd2luLWFybTY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLWRhcndpbi14NjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWRhcndpbi14NjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybSI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgtYXJtNjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1yaXNjdjY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1zMzkweCI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgteDY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4bXVzbC14NjQiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saW51eC1hcm0iOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgtYXJtNjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgtcHBjNjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgtcmlzY3Y2NCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC1saW51eC1zMzkweCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC1saW51eC14NjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXhtdXNsLWFybTY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLWxpbnV4bXVzbC14NjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtd2FzbTMyIjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLXdpbjMyLWFybTY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLXdpbjMyLWlhMzIiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtd2luMzIteDY0IjogIjAuMzQuNSIgfSB9LCAic2hhNTEyLU91OUk1RnQ5V05jQ2JYclU5Y01nUEJjQ0s4TGl3THFjYnl3VzN0NG9EVjM3bjFwenB1TkxzWWlBVjhlT0RuamJ0UWxTRHdaMmNVRWVRejRFNTRIbHRnPT0iXSwKCiAgICAic2hlbGwtcXVvdGUiOiBbInNoZWxsLXF1b3RlQDEuOC4zIiwgIiIsIHt9LCAic2hhNTEyLU9ibW5JRjRoWE5nMUJxaG5IbWdiREVURjhkTFBDZ2daV0Jqa1FmaFpwYnN6Wm5ZdXI1RFVsalRjQ0hpaTVMQzNKNUUweWVPLzFMSU15SCtVdkhRZ3l3PT0iXSwKCiAgICAic2lnaW5mbyI6IFsic2lnaW5mb0AyLjAuMCIsICIiLCB7fSwgInNoYTUxMi15YngwV08xLzhiU0JMRVdYWnZFZDdnTVczU24zSkZsVzNUdlgxblJFYkRMUk5RTmFlTk44V0swbWVCd1BkQWFPSTdUdFJSUkpuL0VzMXpocnJDSHU3Zz09Il0sCgogICAgInNvdXJjZS1tYXAiOiBbInNvdXJjZS1tYXBAMC42LjEiLCAiIiwge30sICJzaGE1MTItVWpnYXB1bVdsYk1oa0JnelQ3WWtjNVlYVVQ0NkYwaUt1OFNHWHEwYmN3UDVkei9oMFBsajZlbkpxanoxWmJxMmw1V2FxWW5yVmJ3V09XTXlGM0Y0N2c9PSJdLAoKICAgICJzb3VyY2UtbWFwLWpzIjogWyJzb3VyY2UtbWFwLWpzQDEuMi4xIiwgIiIsIHt9LCAic2hhNTEyLVVYV01LaExPd1ZLYjcyOElVdFFQWHhmWVUrdXNkeWJ0VXJLLzh1R0U4Q1FNdnJoT3B3dnpEQndqMFFoU0w3TVFjN3ZJc0lTQkc4VlE4K0lEUXhwZlFBPT0iXSwKCiAgICAic291cmNlLW1hcC1zdXBwb3J0IjogWyJzb3VyY2UtbWFwLXN1cHBvcnRAMC41LjIxIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImJ1ZmZlci1mcm9tIjogIl4xLjAuMCIsICJzb3VyY2UtbWFwIjogIl4wLjYuMCIgfSB9LCAic2hhNTEyLXVCSFUzTDNjenNJeVlYS1g4OGZkckdvdnhkU0NvVEdEUlo2U1lYdFNSeExaVXpIZzVQLzY2SHQ2dW9VbEh1OUVab2QraW5YaEtvM3FRZ3dYVVQveTF3PT0iXSwKCiAgICAic3RhY2tiYWNrIjogWyJzdGFja2JhY2tAMC4wLjIiLCAiIiwge30sICJzaGE1MTItMVhNSkU1ZlFvMWpHSDZZLzdlYm53UE9CRWtJRW5UNFFGMzJkNVIxK1ZYZFh2ZU0wSUJNSnQ4emZheFgxUDNRaFZ3clllKzU3Nitqa0FOdFNTMm1CYnc9PSJdLAoKICAgICJzdGQtZW52IjogWyJzdGQtZW52QDQuMS4wIiwgIiIsIHt9LCAic2hhNTEyLVJxN3liY1gyUnVDNTVyOW9hUFZFVzcveHUzdGo4dTRHZUJZSEJXQ3ljaEZ0ek1Jcjg2QTdlM1BQRUJQVDM3c0hTdEtYMytUaVgvRnIvQUNtSkxWbExRPT0iXSwKCiAgICAic3RyaW5nLXdpZHRoIjogWyJzdHJpbmctd2lkdGhANC4yLjMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZW1vamktcmVnZXgiOiAiXjguMC4wIiwgImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50IjogIl4zLjAuMCIsICJzdHJpcC1hbnNpIjogIl42LjAuMSIgfSB9LCAic2hhNTEyLXdLeVFSUXBqSjBzSXA2MkVyU1pkR3NqTUpXc2FwNW9STmloSGh1Nkc3SlZPLzlqSUI2VXlldkwrdFh1T3Fybmc4ai9jeEtUV3lXVXd2U1RyaWlaei9nPT0iXSwKCiAgICAic3RyaXAtYW5zaSI6IFsic3RyaXAtYW5zaUA2LjAuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJhbnNpLXJlZ2V4IjogIl41LjAuMSIgfSB9LCAic2hhNTEyLVkzOFZQU0hjcWtGckNwRm5ROXZ1U1htcXV1djVvWE9LcEdlVDZhR3JyM28zR2M5QWxWYTZKQmZVU09DbmJ4R0daRisvMG9vSTdLclB1VVN6dFVkVTVBPT0iXSwKCiAgICAic3R5bGVkLWpzeCI6IFsic3R5bGVkLWpzeEA1LjEuNiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjbGllbnQtb25seSI6ICIwLjAuMSIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJyZWFjdCI6ICI+PSAxNi44LjAgfHwgMTcueC54IHx8IF4xOC4wLjAtMCB8fCBeMTkuMC4wLTAiIH0gfSwgInNoYTUxMi1xU1Z5RFRlTW90ZHZRWW9IV0xOR3dSRkpIQytpK1p2ZEJSWW9zT0ZnQytXZzF2eDRmck4yL1JHL05BN1NZcXF2S05MZjM5UDJMU1JBMnB1Nm4wWFlaQT09Il0sCgogICAgInN1cHBvcnRzLWNvbG9yIjogWyJzdXBwb3J0cy1jb2xvckA4LjEuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJoYXMtZmxhZyI6ICJeNC4wLjAiIH0gfSwgInNoYTUxMi1NcFVFTjJPb2R0VXp4dktRbDcyY1VGN1JRNUVpSHNHdlNzVkcwaWE5YzVSYldHTDJDSTRDN0VwUFM4VVRCSXBsbmx6WmlOdVY1NncrRnVOeHkzdHkyUT09Il0sCgogICAgInRhaWx3aW5kLW1lcmdlIjogWyJ0YWlsd2luZC1tZXJnZUAzLjYuMCIsICIiLCB7fSwgInNoYTUxMi11eEw3cUFWUXJpcVJRUEF5SzNwajY2VnFza1dxb1ozN1BXOTRqd09Ud05mcS96OW95dTFWK2VxclpxdFIyK2ZDaVhkWU9aZS9Nb2R0OEd0dnFOenUrdz09Il0sCgogICAgInRhaWx3aW5kY3NzIjogWyJ0YWlsd2luZGNzc0A0LjMuMCIsICIiLCB7fSwgInNoYTUxMi15Nm54TUdCMW5NVzlSNms5NmU1Z2RJRnpjZkwvZ1RKUk5hcUdlczFZdmtMblBWWHpXZ2JxRkYyeUxDMFQ4Rzc3NG4yNGN4M1BlOFhyS29uaUNPQUgrUT09Il0sCgogICAgInRhcGFibGUiOiBbInRhcGFibGVAMi4zLjMiLCAiIiwge30sICJzaGE1MTItdXhjL3pwcUZnNng3Qzh2T0U3bGg2TGJkYThlRUw5em1WbS9QTGVUUEJSaGgxeENnZFdhUStKMUNVaWVHcElmbTJIZHRzVXBSditIc2hpYXNCTWNjNkE9PSJdLAoKICAgICJ0ZXJzZXIiOiBbInRlcnNlckA1LjE2LjkiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlLW1hcCI6ICJeMC4zLjIiLCAiYWNvcm4iOiAiXjguNS4wIiwgImNvbW1hbmRlciI6ICJeMi4yMC4wIiwgInNvdXJjZS1tYXAtc3VwcG9ydCI6ICJ+MC41LjIwIiB9LCAiYmluIjogeyAidGVyc2VyIjogImJpbi90ZXJzZXIiIH0gfSwgInNoYTUxMi1IUGEvRmRUQjlYR0kySDEva2VMRlpIeGw2V052QUk0WWFsSEd0RFFUbE1uSmNvcVNhYjFVd0w0bDFoR0VoczYvR21MSEJaSWcvWWdCKytqY2J6b09FZz09Il0sCgogICAgInRpbnliZW5jaCI6IFsidGlueWJlbmNoQDIuOS4wIiwgIiIsIHt9LCAic2hhNTEyLTArRFV2cVdNVmFsTG1oYTZscjRrRDhpQU1LMUh6VjAvYUtuQ3RXYjl2OTY0MVRuUC9NRmI3UGMyYnhveFFqVFhBRXJyeVhWZ1VPZnYyWXFObGxxR2VnPT0iXSwKCiAgICAidGlueWV4ZWMiOiBbInRpbnlleGVjQDEuMS4yIiwgIiIsIHt9LCAic2hhNTEyLWRBcVNxRS9SYWJwQktJOCtoMjZHZkxxNlZiM0pWWHMzMFhZUWpkTWphai9jMnRTOElZWU1iSXpQNTk5S3RSajdjNTcvd1lBcGIzUWpnUmdYbXJDdWtBPT0iXSwKCiAgICAidGlueWdsb2JieSI6IFsidGlueWdsb2JieUAwLjIuMTYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZmRpciI6ICJeNi41LjAiLCAicGljb21hdGNoIjogIl40LjAuNCIgfSB9LCAic2hhNTEyLXBuOTlWaG9BQ1lSOG5GSGh4cWl4K3V2c2JYaW5lQWFzV201b2pYb044eEV3SzVLZDMvVHJoTm4xd0J5dUQ1MlV4V1JMeThwdStrUk1uaUVpNkVxOVpnPT0iXSwKCiAgICAidGlueXJhaW5ib3ciOiBbInRpbnlyYWluYm93QDMuMS4wIiwgIiIsIHt9LCAic2hhNTEyLUJmK0lMbUJncmV0VXJkSnh6WE0wU2dYTFozWGZpYVV1T2ovSUtRSHVUWGlwKzA1WG4rdXlFWWRWZzBrWURpcFRCY0xyQ1Z5VXpBUHo3UW1BcmIwbW13PT0iXSwKCiAgICAidHJlZS1raWxsIjogWyJ0cmVlLWtpbGxAMS4yLjIiLCAiIiwgeyAiYmluIjogeyAidHJlZS1raWxsIjogImNsaS5qcyIgfSB9LCAic2hhNTEyLUwwT3JwaThxR3BSRy8vTmQrSDkwdkZCKzNpSG51ZTF6U1NHbU5PT0NoMUdMSjdyVUtWd1YySHZpanBoR1FTMlVtaFVaZXdTOVZndnhZSWRncitmRzFBPT0iXSwKCiAgICAidHNsaWIiOiBbInRzbGliQDIuOC4xIiwgIiIsIHt9LCAic2hhNTEyLW9KRnU5NEhRYitLVmR1U1VRTDd3bnBtcW5mbUxzT0EvbkFoNmI2RUgwd0NFb0swL21QZVhVNmMzd0tEVjgzTWtPdUhQUkh0U1hLS1U5OUlCYXpTLzJ3PT0iXSwKCiAgICAidHlwZXNjcmlwdCI6IFsidHlwZXNjcmlwdEA1LjkuMyIsICIiLCB7ICJiaW4iOiB7ICJ0c2MiOiAiYmluL3RzYyIsICJ0c3NlcnZlciI6ICJiaW4vdHNzZXJ2ZXIiIH0gfSwgInNoYTUxMi1qbDF2WnpQRGluTHI5ZVV0M0ovdDdWNkZnTkV3OVFqdkJQZHlzejlLZlFERDQxZlFyQzJZNHZLUWRpYVVwRlQ0YlhsYjFSSGhMcHA4d3RtNk01VGdTdz09Il0sCgogICAgInVuZGljaS10eXBlcyI6IFsidW5kaWNpLXR5cGVzQDYuMjEuMCIsICIiLCB7fSwgInNoYTUxMi1pd0RacWcwUUFHcmc5UmF2NUg0bjBNNjRjM21rUjU5Y0o2d1FwKzdDNG5JMGdzbUV4YWVkYVlMTk80NGVUNEF0QkJ3amJUaUdQTWx0Mk1kMFQ5SDlKUT09Il0sCgogICAgInVzZS1zeW5jLWV4dGVybmFsLXN0b3JlIjogWyJ1c2Utc3luYy1leHRlcm5hbC1zdG9yZUAxLjYuMCIsICIiLCB7ICJwZWVyRGVwZW5kZW5jaWVzIjogeyAicmVhY3QiOiAiXjE2LjguMCB8fCBeMTcuMC4wIHx8IF4xOC4wLjAgfHwgXjE5LjAuMCIgfSB9LCAic2hhNTEyLVBwNkdTd0dQL05yUElyeFZGQUlrT1FleXc4bEZlbk9IaWpRV2tVVHJEdnJGNEFMcXlsUDJDL0tDa2VTOWRwVU0zS3ZZUlFobmE1dnQ3SUw5NStaUTl3PT0iXSwKCiAgICAidml0ZSI6IFsidml0ZUA4LjAuMTMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAibGlnaHRuaW5nY3NzIjogIl4xLjMyLjAiLCAicGljb21hdGNoIjogIl40LjAuNCIsICJwb3N0Y3NzIjogIl44LjUuMTQiLCAicm9sbGRvd24iOiAiMS4wLjEiLCAidGlueWdsb2JieSI6ICJeMC4yLjE2IiB9LCAib3B0aW9uYWxEZXBlbmRlbmNpZXMiOiB7ICJmc2V2ZW50cyI6ICJ+Mi4zLjMiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL25vZGUiOiAiXjIwLjE5LjAgfHwgPj0yMi4xMi4wIiwgIkB2aXRlanMvZGV2dG9vbHMiOiAiXjAuMS4xOCIsICJlc2J1aWxkIjogIl4wLjI3LjAgfHwgXjAuMjguMCIsICJqaXRpIjogIj49MS4yMS4wIiwgImxlc3MiOiAiXjQuMC4wIiwgInNhc3MiOiAiXjEuNzAuMCIsICJzYXNzLWVtYmVkZGVkIjogIl4xLjcwLjAiLCAic3R5bHVzIjogIj49MC41NC44IiwgInN1Z2Fyc3MiOiAiXjUuMC4wIiwgInRlcnNlciI6ICJeNS4xNi4wIiwgInRzeCI6ICJeNC44LjEiLCAieWFtbCI6ICJeMi40LjIiIH0sICJvcHRpb25hbFBlZXJzIjogWyJAdHlwZXMvbm9kZSIsICJAdml0ZWpzL2RldnRvb2xzIiwgImVzYnVpbGQiLCAiaml0aSIsICJsZXNzIiwgInNhc3MiLCAic2Fzcy1lbWJlZGRlZCIsICJzdHlsdXMiLCAic3VnYXJzcyIsICJ0ZXJzZXIiLCAidHN4IiwgInlhbWwiXSwgImJpbiI6IHsgInZpdGUiOiAiYmluL3ZpdGUuanMiIH0gfSwgInNoYTUxMi1NRnRqQllnem1TeG1nQTRSQWZqSXlYV3BHZTFvQUxuamdVVHp6VjdRTHgvVEt4Q3pqdE1INkZkOS9lVksrNUZnMXFOb3o1VkF3c21Ncy9Ob2ZybUp2dz09Il0sCgogICAgInZpdGVzdCI6IFsidml0ZXN0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvZXhwZWN0IjogIjQuMS42IiwgIkB2aXRlc3QvbW9ja2VyIjogIjQuMS42IiwgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6ICI0LjEuNiIsICJAdml0ZXN0L3J1bm5lciI6ICI0LjEuNiIsICJAdml0ZXN0L3NuYXBzaG90IjogIjQuMS42IiwgIkB2aXRlc3Qvc3B5IjogIjQuMS42IiwgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAiZXMtbW9kdWxlLWxleGVyIjogIl4yLjAuMCIsICJleHBlY3QtdHlwZSI6ICJeMS4zLjAiLCAibWFnaWMtc3RyaW5nIjogIl4wLjMwLjIxIiwgIm9idWciOiAiXjIuMS4xIiwgInBhdGhlIjogIl4yLjAuMyIsICJwaWNvbWF0Y2giOiAiXjQuMC4zIiwgInN0ZC1lbnYiOiAiXjQuMC4wLXJjLjEiLCAidGlueWJlbmNoIjogIl4yLjkuMCIsICJ0aW55ZXhlYyI6ICJeMS4wLjIiLCAidGlueWdsb2JieSI6ICJeMC4yLjE1IiwgInRpbnlyYWluYm93IjogIl4zLjEuMCIsICJ2aXRlIjogIl42LjAuMCB8fCBeNy4wLjAgfHwgXjguMC4wIiwgIndoeS1pcy1ub2RlLXJ1bm5pbmciOiAiXjIuMy4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBlZGdlLXJ1bnRpbWUvdm0iOiAiKiIsICJAb3BlbnRlbGVtZXRyeS9hcGkiOiAiXjEuOS4wIiwgIkB0eXBlcy9ub2RlIjogIl4yMC4wLjAgfHwgXjIyLjAuMCB8fCA+PTI0LjAuMCIsICJAdml0ZXN0L2Jyb3dzZXItcGxheXdyaWdodCI6ICI0LjEuNiIsICJAdml0ZXN0L2Jyb3dzZXItcHJldmlldyI6ICI0LjEuNiIsICJAdml0ZXN0L2Jyb3dzZXItd2ViZHJpdmVyaW8iOiAiNC4xLjYiLCAiQHZpdGVzdC9jb3ZlcmFnZS1pc3RhbmJ1bCI6ICI0LjEuNiIsICJAdml0ZXN0L2NvdmVyYWdlLXY4IjogIjQuMS42IiwgIkB2aXRlc3QvdWkiOiAiNC4xLjYiLCAiaGFwcHktZG9tIjogIioiLCAianNkb20iOiAiKiIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkBlZGdlLXJ1bnRpbWUvdm0iLCAiQG9wZW50ZWxlbWV0cnkvYXBpIiwgIkB0eXBlcy9ub2RlIiwgIkB2aXRlc3QvYnJvd3Nlci1wbGF5d3JpZ2h0IiwgIkB2aXRlc3QvYnJvd3Nlci1wcmV2aWV3IiwgIkB2aXRlc3QvYnJvd3Nlci13ZWJkcml2ZXJpbyIsICJAdml0ZXN0L2NvdmVyYWdlLWlzdGFuYnVsIiwgIkB2aXRlc3QvY292ZXJhZ2UtdjgiLCAiQHZpdGVzdC91aSIsICJoYXBweS1kb20iLCAianNkb20iXSwgImJpbiI6IHsgInZpdGVzdCI6ICJ2aXRlc3QubWpzIiB9IH0sICJzaGE1MTItNmx2amJTM3A5YjRDcmRDbWd1emJoMi80dW9YaEdFMnE3MVI0T1g1c3FGOVIxYm85WGQ2ZkdyTUFmdnA1d25DemxCbkZWZENPcDZvbnVUUVZibzhpVVE9PSJdLAoKICAgICJ3aHktaXMtbm9kZS1ydW5uaW5nIjogWyJ3aHktaXMtbm9kZS1ydW5uaW5nQDIuMy4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInNpZ2luZm8iOiAiXjIuMC4wIiwgInN0YWNrYmFjayI6ICIwLjAuMiIgfSwgImJpbiI6IHsgIndoeS1pcy1ub2RlLXJ1bm5pbmciOiAiY2xpLmpzIiB9IH0sICJzaGE1MTItaFVybWFXQmRWRGN4dllxbnloMDl6dW5LelJPV2piWlRpTnk4ZEJFamtTN2VoRURRaWJYSjdYdmxtdGJ3dVRjbFVpSXlOK0N5WFFENFZta284Zk5tOHc9PSJdLAoKICAgICJ3cmFwLWFuc2kiOiBbIndyYXAtYW5zaUA3LjAuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJhbnNpLXN0eWxlcyI6ICJeNC4wLjAiLCAic3RyaW5nLXdpZHRoIjogIl40LjEuMCIsICJzdHJpcC1hbnNpIjogIl42LjAuMCIgfSB9LCAic2hhNTEyLVlWR0lqMmthbUxTVHh3Nk5zWmpvQnhmU3dzbjB5Y2Rlc21jNHArUTIxYzV6UHVaMXBsK05meFZkeFB0ZEh2bU5WT1E2WFNZRzRBVXR5dC9GaTdEMTZRPT0iXSwKCiAgICAieTE4biI6IFsieTE4bkA1LjAuOCIsICIiLCB7fSwgInNoYTUxMi0wcGZGemVnZURXSkhKSUFtVExSUDJEd0hqZEY1czdqbzl0dXp0ZFF4QWhJTkNkdlMrM25HSU5xUGQwMEFwaHFKUi8wTGhBTlVTNi8rN1NDYjk4WU9mQT09Il0sCgogICAgInlhbWwiOiBbInlhbWxAMi45LjAiLCAiIiwgeyAiYmluIjogeyAieWFtbCI6ICJiaW4ubWpzIiB9IH0sICJzaGE1MTItMkF2aE5YM21iOHpkNlp5N0lOVHRTcGwxRjE1SFc2V25xajBzcldsa0tMY3BZbC9nTUlNSml5dUdxMktlSTJZRnhVUGpkbEIrM0xjMTBzZU1MdEw0Y0E9PSJdLAoKICAgICJ5YXJncyI6IFsieWFyZ3NAMTcuNy4yIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImNsaXVpIjogIl44LjAuMSIsICJlc2NhbGFkZSI6ICJeMy4xLjEiLCAiZ2V0LWNhbGxlci1maWxlIjogIl4yLjAuNSIsICJyZXF1aXJlLWRpcmVjdG9yeSI6ICJeMi4xLjEiLCAic3RyaW5nLXdpZHRoIjogIl40LjIuMyIsICJ5MThuIjogIl41LjAuNSIsICJ5YXJncy1wYXJzZXIiOiAiXjIxLjEuMSIgfSB9LCAic2hhNTEyLTdkU3p6UlErK0NLbk5JL2tyS25ZUlY3SktLUFVYTUVoNjFzb2FIS2c5bXJXRWh6RldoRm54UHhHbCs2OWNEMU91NjNDMTNOVVBDbm1JY3J2cUN1TTZ3PT0iXSwKCiAgICAieWFyZ3MtcGFyc2VyIjogWyJ5YXJncy1wYXJzZXJAMjEuMS4xIiwgIiIsIHt9LCAic2hhNTEyLXRWcHNKVzdEZGplY0FpRnBiSUIxZTNxeElRc0U2Tm9QYzUvZVRkcmJiSUM0aDBMVnNXaG5vYTNnK20ySGNsQkl1akh6c3haNFZKVkErR1V1YzIvTEJ3PT0iXSwKCiAgICAiem9kIjogWyJ6b2RANC40LjMiLCAiIiwge30sICJzaGE1MTIteXRFTkZqSUpGbDJVd1lnbGRlMmpjaFcySHdtNEdKRkxEaVNYV2RUckpRQklOOUZjeXA3bjREaHhKRWlXTkFKTVYxL0JxV2ZXL2trZzcxVURjSEp5VFE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQGVtbmFwaS9jb3JlIjogWyJAZW1uYXBpL2NvcmVAMS4xMC4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvd2FzaS10aHJlYWRzIjogIjEuMi4xIiwgInRzbGliIjogIl4yLjQuMCIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTIteXE2T2tKNHA4MkNBZlBsMHU5bVFlYlFIS1BKa1k3V3JJdWsyMDVjVFluWWUrazJaOFlCaDExRnJiUkcvSDZpaGlycWNhY09nbDJCSU84b3lNUUxlWHc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQGVtbmFwaS9ydW50aW1lIjogWyJAZW1uYXBpL3J1bnRpbWVAMS4xMC4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRzbGliIjogIl4yLjQuMCIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItZXd2WWxrODZ4VW9HSTB6UVJOcS9tQysxNlIxUWVEbEtReTIxS2kzb1NZWE5nTGI0NUdWMVA2QTBNKy9zNm55Q3VORHFlNVZwYVk4NEJ6WEd3VmJ3RkE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQGVtbmFwaS93YXNpLXRocmVhZHMiOiBbIkBlbW5hcGkvd2FzaS10aHJlYWRzQDEuMi4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRzbGliIjogIl4yLjQuMCIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItdVRJSTdPWUYrL01lcy9NcmNJT1lwNXlPdFNNTEJXU0lvTFBwY2d3aXBvaUtibGk2azMyMnRjb0ZzeG9JSXhQRHFXMDFTUUdBZ2tvNEV6WmkyQk52Mnc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQG5hcGktcnMvd2FzbS1ydW50aW1lIjogWyJAbmFwaS1ycy93YXNtLXJ1bnRpbWVAMS4xLjQiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHR5YnlzL3dhc20tdXRpbCI6ICJeMC4xMC4xIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvY29yZSI6ICJeMS43LjEiLCAiQGVtbmFwaS9ydW50aW1lIjogIl4xLjcuMSIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItM05RTk5nQTFZU2xKYi9rTUgxaWxkQVNQOUhXNy83a1luUkkyc3pXSmFvZmFTMWhXbWJHSTRIK2QzKzIyYUd6WFhOOUlKK24rR2lGVmNHaXBKUDE4b3c9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvQHR5YnlzL3dhc20tdXRpbCI6IFsiQHR5YnlzL3dhc20tdXRpbEAwLjEwLjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9LCAiYnVuZGxlZCI6IHRydWUgfSwgInNoYTUxMi1Sb0J2SjJYMHd1S2xXRklqcndmZkd3MUlxWkhLUXF6SWNoS2FhZFpaZm5OcHNBWXAybU0waDM2SnRQQ2pOREFIR2dZZXovMTV1TUJwZkd3Y2hoaU1nZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS13YXNtMzItd2FzaS90c2xpYiI6IFsidHNsaWJAMi44LjEiLCAiIiwgeyAiYnVuZGxlZCI6IHRydWUgfSwgInNoYTUxMi1vSkZ1OTRIUWIrS1ZkdVNVUUw3d25wbXFuZm1Mc09BL25BaDZiNkVIMHdDRW9LMC9tUGVYVTZjM3dLRFY4M01rT3VIUFJIdFNYS0tVOTlJQmF6Uy8ydz09Il0sCgogICAgImNoYWxrL3N1cHBvcnRzLWNvbG9yIjogWyJzdXBwb3J0cy1jb2xvckA3LjIuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJoYXMtZmxhZyI6ICJeNC4wLjAiIH0gfSwgInNoYTUxMi1xcENBdlJsOXN0dU9IdmVLc243SG5jSlJ2djUwMXFJYWNLelFsTy8rTHd4YzkrMHEyd0x5djREZnZ0ODAvRFBuMnBxT0JzSmREaW9nWEdSOStPdndSdz09Il0sCgogICAgIm5leHQvcG9zdGNzcyI6IFsicG9zdGNzc0A4LjQuMzEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAibmFub2lkIjogIl4zLjMuNiIsICJwaWNvY29sb3JzIjogIl4xLjAuMCIsICJzb3VyY2UtbWFwLWpzIjogIl4xLjAuMiIgfSB9LCAic2hhNTEyLVBTMDhJYm9pYTltdHMvMnlnVjNlTHBZNWdoblVjZkxWL0VYVE9XMUUycVl4SktHR0JVdE5qTjc2RllIbk1zMzZSbUFSbjQxYkMwQVptbityUjBPVnBRPT0iXSwKICB9Cn0K" }, { "path": "metadata.json", "kind": "text", "content": '{\n "id": "services",\n "name": "Services",\n "tagline": "Bookable-services storefront with calendar slots and staff profiles.",\n "industry": "services",\n "tags": ["services", "bookings", "appointments"],\n "stability": "stable",\n "schemaType": "BeautySalon",\n "mock": {\n "seedName": "services",\n "seedBusinessId": "bus_serene_spa"\n }\n}\n' }, { "path": "next.config.ts", "kind": "text", "content": 'import type { NextConfig } from "next";\n\n// Same-origin proxy target for the storefront API. The public key\n// decides: a real `cpk_live_\u2026` / `cpk_test_\u2026` only resolves against\n// hosted Cimplify, so browser cart writes go to the same place the\n// server catalogue reads come from. Anything else (`mock-dev`, empty)\n// falls back to the local `cimplify dev` mock in dev.\nconst publicKey = process.env.NEXT_PUBLIC_CIMPLIFY_PUBLIC_KEY?.trim() ?? "";\nconst keyTargetsHostedCimplify =\n publicKey.startsWith("cpk_live_") || publicKey.startsWith("cpk_test_");\nconst STOREFRONT_URL =\n process.env.NODE_ENV === "production" || keyTargetsHostedCimplify\n ? "https://storefronts.cimplify.io"\n : "http://127.0.0.1:8787";\n\nif (STOREFRONT_URL === "http://127.0.0.1:8787") {\n console.warn(\n "[cimplify] next.config resolved the local storefront API URL; production deploys must run with NODE_ENV=production.",\n );\n}\n\n// Cache Components (\'use cache\' + cacheTag/cacheLife) require Node-specific\n// setTimeout atomicity and serialize a postponed state that routinely exceeds\n// CF Workers\' 128MB zlib limit. We\'re on Cloudflare Workers via opennext, so\n// we stay on Next 16\'s "Previous Model" \u2014 `fetch.next.{revalidate,tags}` via\n// the SDK\'s `cacheOptions`, plus `export const revalidate` per page. See\n// https://nextjs.org/docs/app/guides/caching-without-cache-components.\nconst nextConfig: NextConfig = {\n async redirects() {\n return [\n { source: "/login", destination: "/account", permanent: false },\n { source: "/signup", destination: "/account", permanent: false },\n ];\n },\n async rewrites() {\n return [\n { source: "/api/v1/:path*", destination: `${STOREFRONT_URL}/api/v1/:path*` },\n { source: "/img/:path*", destination: `${STOREFRONT_URL}/img/:path*` },\n { source: "/elements/:path*", destination: `${STOREFRONT_URL}/elements/:path*` },\n { source: "/_mock/:path*", destination: `${STOREFRONT_URL}/_mock/:path*` },\n ];\n },\n images: {\n loader: "custom",\n loaderFile: "./lib/cimplify-loader.ts",\n remotePatterns: [\n { protocol: "http", hostname: "127.0.0.1", port: "8787", pathname: "/img/**" },\n { protocol: "http", hostname: "localhost", port: "8787", pathname: "/img/**" },\n { protocol: "http", hostname: "localhost", port: "3000", pathname: "/img/**" },\n { protocol: "https", hostname: "loremflickr.com", pathname: "/**" },\n { protocol: "https", hostname: "images.unsplash.com", pathname: "/**" },\n { protocol: "https", hostname: "static-tmp.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "storefrontassetscdn.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "cdn.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "res.cloudinary.com", pathname: "/cimplify/**" },\n ],\n },\n};\n\nexport default nextConfig;\n' }, { "path": "CLAUDE.md", "kind": "text", "content": "# CLAUDE.md\n\nThis project was scaffolded from a Cimplify storefront template (`cimplify init`).\n\n## Read these first\n\n- **`AGENTS.md`** at the project root \u2014 the file \u2194 `brand.X` field map for *this template's* industry, plus the architectural rules.\n- **`.claude/skills/cimplify-storefront/SKILL.md`** \u2014 the playbook for common tasks (rebrand, add a section, wire a Server Action, deploy, eject a component). Invoke it whenever you're asked to change content, palette, copy, or routing.\n\n## The two-line summary\n\n1. **Edit `lib/brand.ts`** for any visible string.\n2. **Edit `app/globals.css` `@theme` block** for any palette / radius / font change.\n\nThat covers ~95% of what merchants ask for. For anything else, follow the `cimplify-storefront` skill.\n\n## Don't do\n\n- Hardcode strings in pages or components.\n- Enable `cacheComponents: true` in `next.config.ts` \u2014 we're on Cloudflare Workers, where `'use cache'` postponed state blows past CF's 128MB zlib limit. This template stays on Next 16's \"Previous Model\" (ISR): `export const revalidate` per page + `cacheOptions: { revalidate, tags }` on SDK reads.\n- Add `'use cache'`, `cacheTag`, or `cacheLife` anywhere. Use the SDK's `cacheOptions` instead.\n- Use `unstable_cache` \u2014 it's gone in Next 16. Use SDK `cacheOptions` or `fetch.next.{revalidate,tags}`.\n- Run `bun test` (Bun's `vi` shim is incomplete) \u2014 use `bun run test:run`.\n" }, { "path": "app/about/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `About \u2014 ${brand.name}`,\n description: brand.description,\n};\n\nexport default function AboutPage() {\n const a = brand.about;\n const titleParts = a.title.split("\\n");\n return (\n <article className="max-w-3xl mx-auto px-6 sm:px-8 py-16">\n <p className="text-[11px] font-semibold uppercase tracking-[0.16em] text-primary mb-2">\n {a.eyebrow}\n </p>\n <h1 className="font-serif text-[clamp(2.25rem,5vw,3.5rem)] font-semibold mb-6 -tracking-[0.02em]">\n {titleParts.map((line, i) => (\n <span key={i}>\n {line}\n {i < titleParts.length - 1 && <br />}\n </span>\n ))}\n </h1>\n <div className="prose prose-lg max-w-none space-y-5 text-foreground/90 leading-relaxed">\n {a.paragraphs.map((p, i) => (\n <p key={i}>{p}</p>\n ))}\n {a.sections.map((s) => (\n <div key={s.heading}>\n <h2 className="font-serif text-3xl font-semibold mt-10 mb-3">{s.heading}</h2>\n <p>{s.body}</p>\n </div>\n ))}\n </div>\n </article>\n );\n}\n' }, { "path": "app/llms.txt/route.ts", "kind": "text", "content": 'import { getServerClient, tags, type Product } from "@cimplify/sdk/server";\nimport { brand } from "@/lib/brand";\nimport { getSiteUrl } from "@/lib/site-url";\n\nexport const revalidate = 3600;\n\nasync function buildLlmsTxt(SITE_URL: string): Promise<string> {\n const client = getServerClient();\n const [productsRes, categoriesRes, collectionsRes] = await Promise.all([\n client.catalogue.getProducts(\n { limit: 500 },\n { cacheOptions: { revalidate: 3600, tags: [tags.products()] } },\n ),\n client.catalogue.getCategories({\n cacheOptions: { revalidate: 3600, tags: [tags.categories()] },\n }),\n client.catalogue.getCollections({\n cacheOptions: { revalidate: 3600, tags: [tags.collections()] },\n }),\n ]);\n\n const products: Product[] = productsRes.ok ? productsRes.value.items : [];\n const categories = categoriesRes.ok ? categoriesRes.value : [];\n const collections = collectionsRes.ok ? collectionsRes.value : [];\n\n const lines: string[] = [];\n lines.push(`# ${brand.name}`);\n lines.push("");\n lines.push(`> ${brand.llms.summary}`);\n lines.push("");\n lines.push("## Browse");\n lines.push(`- [Home](${SITE_URL}/)`);\n lines.push(`- [Shop](${SITE_URL}/shop): Full menu with filter and sort.`);\n\n if (categories.length > 0) {\n lines.push("");\n lines.push("## Categories");\n for (const c of categories) {\n lines.push(\n `- [${c.name}](${SITE_URL}/categories/${c.slug})${c.description ? `: ${c.description}` : ""}`,\n );\n }\n }\n\n if (collections.length > 0) {\n lines.push("");\n lines.push("## Collections");\n for (const c of collections) {\n lines.push(\n `- [${c.name}](${SITE_URL}/collections/${c.slug})${c.description ? `: ${c.description}` : ""}`,\n );\n }\n }\n\n if (products.length > 0) {\n lines.push("");\n lines.push("## Products");\n for (const p of products) {\n const slug = p.slug ?? p.id;\n const price = `${brand.currency} ${p.default_price}`;\n const desc = p.description ? ` \u2014 ${p.description.replace(/\\s+/g, " ").slice(0, 200)}` : "";\n lines.push(`- [${p.name}](${SITE_URL}/shop?product=${slug}) (${price})${desc}`);\n }\n }\n\n lines.push("");\n lines.push("## Information");\n lines.push(`- [About](${SITE_URL}/about)`);\n lines.push(`- [FAQ](${SITE_URL}/faq)`);\n lines.push(`- [Terms of Service](${SITE_URL}/terms)`);\n lines.push(`- [Privacy Policy](${SITE_URL}/privacy)`);\n lines.push(`- [Sitemap (XML)](${SITE_URL}/sitemap.xml)`);\n lines.push("");\n lines.push("## Contact");\n lines.push(`- Email: ${brand.contact.email}`);\n lines.push(`- Phone: ${brand.contact.phone}`);\n lines.push(`- Address: ${brand.contact.address}`);\n\n return lines.join("\\n") + "\\n";\n}\n\n/**\n * `/llms.txt` \u2014 machine-readable site index for LLMs (per llmstxt.org).\n * Lets coding agents and chat assistants find products, categories, and\n * support pages without scraping HTML. Plain Markdown so it streams cheaply\n * into context windows.\n */\nexport async function GET(): Promise<Response> {\n const body = await buildLlmsTxt(await getSiteUrl());\n return new Response(body, {\n headers: {\n "Content-Type": "text/plain; charset=utf-8",\n "Cache-Control": "public, max-age=0, s-maxage=3600, stale-while-revalidate=86400",\n },\n });\n}\n' }, { "path": "app/contact/contact-form.tsx", "kind": "text", "content": `"use client";
|
|
4976
4976
|
|
|
4977
4977
|
import { useState } from "react";
|
|
4978
4978
|
|
|
@@ -5606,7 +5606,7 @@ export const brand: Brand = {
|
|
|
5606
5606
|
* the root layout prerenderable.
|
|
5607
5607
|
*/
|
|
5608
5608
|
export const SITE_URL = "https://example.com";
|
|
5609
|
-
` }, { "path": "lib/site-url.ts", "kind": "text", "content": 'import { SITE_URL } from "./site.config";\n\n/** Canonical absolute URL for this storefront. */\nexport async function getSiteUrl(): Promise<string> {\n return SITE_URL;\n}\n' }, { "path": "lib/cimplify-loader.ts", "kind": "text", "content": 'import type { ImageLoader } from "next/image";\n\nimport { assetUrl, isCimplifyAsset } from "@cimplify/sdk";\n\nconst cdnBase = process.env.NEXT_PUBLIC_CIMPLIFY_CDN_URL?.trim() || undefined;\n\nconst cimplifyImageLoader: ImageLoader = ({ src, width, quality }) => {\n if (isCimplifyAsset(src, cdnBase)) {\n return assetUrl(src, {\n base: cdnBase,\n w: width,\n quality,\n format: "auto",\n });\n }\n return src;\n};\n\nexport default cimplifyImageLoader;\n' }, { "path": "lib/cart.ts", "kind": "text", "content": '"use client";\n\nimport { useCart } from "@cimplify/sdk/react";\n\n/**\n * Reactive cart count for the header pill. Subscribes to the SDK cart\n * state \u2014 updates immediately on add / remove / quantity change.\n */\nexport function useCartCount(): { count: number } {\n const { itemCount } = useCart();\n return { count: itemCount };\n}\n' }, { "path": ".gitignore", "kind": "text", "content": "node_modules\n.next\n.open-next\nout\n.env\n.env.local\n.env*.local\n.DS_Store\n*.tsbuildinfo\nnext-env.d.ts\n\n# Playwright runtime artifacts (commit the snapshots in e2e/__snapshots__/)\ntest-results/\nplaywright-report/\nblob-report/\n.playwright/\n" }, { "path": "package.json", "kind": "text", "content": '{\n "name": "__STOREFRONT_NAME__",\n "private": true,\n "version": "0.0.0",\n "scripts": {\n "dev": "concurrently -k -n mock,next -c blue,magenta \\"cimplify-mock --seed fashion --quiet\\" \\"next dev\\"",\n "dev:storefront": "next dev",\n "dev:mock": "cimplify-mock --seed fashion",\n "build": "next build",\n "start": "next start",\n "typecheck": "tsc --noEmit",\n "test": "vitest",\n "test:run": "vitest run",\n "check:brand": "vitest run __tests__/brand.test.ts",\n "check:cart": "vitest run __tests__/cart-flow.test.ts",\n "check:contract": "vitest run __tests__/contract.test.ts",\n "check:visual": "playwright test",\n "check:visual:update": "playwright test --update-snapshots",\n "check": "bun run typecheck && bun run test:run"\n },\n "dependencies": {\n "@cimplify/sdk": "^0.56.0",\n "next": "^16.2.6",\n "react": "^19.0.0",\n "react-dom": "^19.0.0"\n },\n "devDependencies": {\n "@playwright/test": "^1.50.0",\n "@tailwindcss/postcss": "^4.2.4",\n "@types/node": "^22.10.0",\n "@types/react": "^19.0.0",\n "@types/react-dom": "^19.0.0",\n "concurrently": "^9.0.0",\n "tailwindcss": "^4.2.4",\n "typescript": "^5.9.3",\n "vitest": "^4.1.5"\n }\n}\n' }, { "path": "bun.lock", "kind": "binary", "content": "ewogICJsb2NrZmlsZVZlcnNpb24iOiAxLAogICJjb25maWdWZXJzaW9uIjogMSwKICAid29ya3NwYWNlcyI6IHsKICAgICIiOiB7CiAgICAgICJuYW1lIjogIl9fU1RPUkVGUk9OVF9OQU1FX18iLAogICAgICAiZGVwZW5kZW5jaWVzIjogewogICAgICAgICJAY2ltcGxpZnkvc2RrIjogIl4wLjU0LjAiLAogICAgICAgICJuZXh0IjogIl4xNi4yLjYiLAogICAgICAgICJyZWFjdCI6ICJeMTkuMC4wIiwKICAgICAgICAicmVhY3QtZG9tIjogIl4xOS4wLjAiLAogICAgICB9LAogICAgICAiZGV2RGVwZW5kZW5jaWVzIjogewogICAgICAgICJAcGxheXdyaWdodC90ZXN0IjogIl4xLjUwLjAiLAogICAgICAgICJAdGFpbHdpbmRjc3MvcG9zdGNzcyI6ICJeNC4yLjQiLAogICAgICAgICJAdHlwZXMvbm9kZSI6ICJeMjIuMTAuMCIsCiAgICAgICAgIkB0eXBlcy9yZWFjdCI6ICJeMTkuMC4wIiwKICAgICAgICAiQHR5cGVzL3JlYWN0LWRvbSI6ICJeMTkuMC4wIiwKICAgICAgICAiY29uY3VycmVudGx5IjogIl45LjAuMCIsCiAgICAgICAgInRhaWx3aW5kY3NzIjogIl40LjIuNCIsCiAgICAgICAgInR5cGVzY3JpcHQiOiAiXjUuOS4zIiwKICAgICAgICAidml0ZXN0IjogIl40LjEuNSIsCiAgICAgIH0sCiAgICB9LAogIH0sCiAgInBhY2thZ2VzIjogewogICAgIkBhbGxvYy9xdWljay1scnUiOiBbIkBhbGxvYy9xdWljay1scnVANS4yLjAiLCAiIiwge30sICJzaGE1MTItVXJjQUJCKzRiVXJGQUJ3Ymx1VElCRXJYd3Zic1UvVjdUWldmbWJnSmZia3dpQnV6aVM5Z3hkT0RVeXVpZWNmZEdRODVqZ2xNVzZqdVMzK3o1VHNLTHc9PSJdLAoKICAgICJAYmFiZWwvcnVudGltZSI6IFsiQGJhYmVsL3J1bnRpbWVANy4yOS4yIiwgIiIsIHt9LCAic2hhNTEyLUppRFNoSDQ1ektIV3lHZTRaTlZSckNqQno4Tmg5VE1tWkcxa2g0UVRLOGhDQlRXQmk4RGEraTdzMWZKdzcvbFlwTTRjY2VwU05mcXpaL1F2QUJCaTVnPT0iXSwKCiAgICAiQGJhc2UtdWkvcmVhY3QiOiBbIkBiYXNlLXVpL3JlYWN0QDEuNS4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBiYWJlbC9ydW50aW1lIjogIl43LjI5LjIiLCAiQGJhc2UtdWkvdXRpbHMiOiAiMC4yLjkiLCAiQGZsb2F0aW5nLXVpL3JlYWN0LWRvbSI6ICJeMi4xLjgiLCAiQGZsb2F0aW5nLXVpL3V0aWxzIjogIl4wLjIuMTEiLCAidXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUiOiAiXjEuNi4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBkYXRlLWZucy90eiI6ICJeMS4yLjAiLCAiQHR5cGVzL3JlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgImRhdGUtZm5zIjogIl40LjAuMCIsICJyZWFjdCI6ICJeMTcgfHwgXjE4IHx8IF4xOSIsICJyZWFjdC1kb20iOiAiXjE3IHx8IF4xOCB8fCBeMTkiIH0sICJvcHRpb25hbFBlZXJzIjogWyJAZGF0ZS1mbnMvdHoiLCAiQHR5cGVzL3JlYWN0IiwgImRhdGUtZm5zIl0gfSwgInNoYTUxMi16MWdTQWxjZWQxeVkraU0rbUhERXRJa0Q4VUkzRWJzNTJNdUJQeHZWNmY1aFJ1dGsreHZDSC93dUI3aERxRHpLOUpHNUZvTXo1bmhycXRTczF3anQxQT09Il0sCgogICAgIkBiYXNlLXVpL3V0aWxzIjogWyJAYmFzZS11aS91dGlsc0AwLjIuOSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYmFiZWwvcnVudGltZSI6ICJeNy4yOS4yIiwgIkBmbG9hdGluZy11aS91dGlscyI6ICJeMC4yLjExIiwgInJlc2VsZWN0IjogIl41LjEuMSIsICJ1c2Utc3luYy1leHRlcm5hbC1zdG9yZSI6ICJeMS42LjAiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL3JlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgInJlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgInJlYWN0LWRvbSI6ICJeMTcgfHwgXjE4IHx8IF4xOSIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkB0eXBlcy9yZWFjdCJdIH0sICJzaGE1MTIteC9QRERDWXpvcVBwanJkeWIzVmN5eWxUSTJJalVYRXRZREdpNWZvaDdLc25tTkpJSWFWd0EyR0xnREgxZHBzMUdnWGlKYkE2MGhNK0F5dVRmUXpJdnc9PSJdLAoKICAgICJAY2ltcGxpZnkvc2RrIjogWyJAY2ltcGxpZnkvc2RrQDAuNTQuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYmFzZS11aS9yZWFjdCI6ICJeMS40LjEiLCAiY2xzeCI6ICJeMi4xLjEiLCAiZGF0ZS1mbnMiOiAiXjQuMS4wIiwgImxpYnBob25lbnVtYmVyLWpzIjogIjEuMTIuNDEiLCAicmVhY3QtZGF5LXBpY2tlciI6ICJeOS4xNC4wIiwgInRhaWx3aW5kLW1lcmdlIjogIl4zLjUuMCIsICJ6b2QiOiAiXjQuNC4zIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBwYXlzdGFjay9pbmxpbmUtanMiOiAiXjIuMjIuOCIsICJtc3ciOiAiPj0yLjAuMCIsICJyZWFjdCI6ICI+PTE3LjAuMCIsICJ2aXRlc3QiOiAiPj0yLjAuMCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkBwYXlzdGFjay9pbmxpbmUtanMiLCAibXN3IiwgInJlYWN0IiwgInZpdGVzdCJdLCAiYmluIjogeyAiY2ltcGxpZnktbW9jayI6ICJkaXN0L21vY2svY2xpLm1qcyIgfSB9LCAic2hhNTEyLVlVTi9sT3FWaUhjaTF2OVVTV1d3QVd0eTI5cEVYQmRMVHVLYXJTbDhFcGFmV2g1amtkR1oxUStOZTkvYmZnVFptUjhpVFVsdEE4VTdnbFYyRm9SU2dnPT0iXSwKCiAgICAiQGRhdGUtZm5zL3R6IjogWyJAZGF0ZS1mbnMvdHpAMS40LjEiLCAiIiwge30sICJzaGE1MTItUDVMVU5odGJqNllmSTNpSmp3NUVMOWVVQUc2T2l0RDBXM2ZXUWNwUWpEUmMvUUlzTDB0Uk51TzFQY0R2UGNjV0wxZlNUWFhkRTFkcytsOTVEVi9PRkE9PSJdLAoKICAgICJAZW1uYXBpL2NvcmUiOiBbIkBlbW5hcGkvY29yZUAxLjEwLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGVtbmFwaS93YXNpLXRocmVhZHMiOiAiMS4yLjEiLCAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTIteXE2T2tKNHA4MkNBZlBsMHU5bVFlYlFIS1BKa1k3V3JJdWsyMDVjVFluWWUrazJaOFlCaDExRnJiUkcvSDZpaGlycWNhY09nbDJCSU84b3lNUUxlWHc9PSJdLAoKICAgICJAZW1uYXBpL3J1bnRpbWUiOiBbIkBlbW5hcGkvcnVudGltZUAxLjEwLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTItZXd2WWxrODZ4VW9HSTB6UVJOcS9tQysxNlIxUWVEbEtReTIxS2kzb1NZWE5nTGI0NUdWMVA2QTBNKy9zNm55Q3VORHFlNVZwYVk4NEJ6WEd3VmJ3RkE9PSJdLAoKICAgICJAZW1uYXBpL3dhc2ktdGhyZWFkcyI6IFsiQGVtbmFwaS93YXNpLXRocmVhZHNAMS4yLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTItdVRJSTdPWUYrL01lcy9NcmNJT1lwNXlPdFNNTEJXU0lvTFBwY2d3aXBvaUtibGk2azMyMnRjb0ZzeG9JSXhQRHFXMDFTUUdBZ2tvNEV6WmkyQk52Mnc9PSJdLAoKICAgICJAZXNidWlsZC9haXgtcHBjNjQiOiBbIkBlc2J1aWxkL2FpeC1wcGM2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYWl4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi0xVkNJQ1d5cGVRS2hWYkU5b1cvc0phQW1qTHhoVnFhY2RrdlBMRWp3bHR0amZ3RU5SU0NsUzhFakJ6MEt6UnlGU0NQRElrdVhXMzRKZS92azd6ZEI3UT09Il0sCgogICAgIkBlc2J1aWxkL2FuZHJvaWQtYXJtIjogWyJAZXNidWlsZC9hbmRyb2lkLWFybUAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtIiB9LCAic2hhNTEyLVFOZFFFcHM3RGZGd0UzaFhpVTRCWmVPVjY4SEh6WXdHZDBOdGhoZDN1Q2trRUtLNy9SNk1UZ00wUDdIN0ZBczVwVS9ESVdzdmlNbUVHeEVveElaK1pRPT0iXSwKCiAgICAiQGVzYnVpbGQvYW5kcm9pZC1hcm02NCI6IFsiQGVzYnVpbGQvYW5kcm9pZC1hcm02NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItYkJ5NjlwZ2ZoTUd0Q253cEMveDVRaGZ4QXovY0JnUTllbmJ0d2pmNlY5bG5QSS9oTXlUOWlXcFIxYXJtMGwza3R0VHI0TDBLU0xwS21McC9pbEtTOUE9PSJdLAoKICAgICJAZXNidWlsZC9hbmRyb2lkLXg2NCI6IFsiQGVzYnVpbGQvYW5kcm9pZC14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImFuZHJvaWQiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1UVmhkVnRRSUZ1VnBJSVIyODJidGNHQzJvR1FvU2ZaZm1CZFRpcDJhbkNhVlljcVdsWlhHY2RjS0lVa2xmWDJ3ajBKa2xOWWd6MzlPQnFoMmNxWHZjUT09Il0sCgogICAgIkBlc2J1aWxkL2Rhcndpbi1hcm02NCI6IFsiQGVzYnVpbGQvZGFyd2luLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVkxZ2lDZk00bmxIRFdFZlNja016ZVdOZFFTMzFCUUdzOS9yb3V3NlViOTF0a0s3OWFJTVRIM3E5eEh2ekg4ZDB3RHJ1NUNpMGtXQjhiM3VwL25sMTZnPT0iXSwKCiAgICAiQGVzYnVpbGQvZGFyd2luLXg2NCI6IFsiQGVzYnVpbGQvZGFyd2luLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiZGFyd2luIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItQ0pzcnk4WkdNNVZGVmV5VVlCM2NkS3BkL0g2OVBZZXo0ZUpoMVcvdDM4dnp1dGRqRWp0UDdoQjZlTEtCb09keGNBbEN0RVlIelEvUEovb1U5STR1MEE9PSJdLAoKICAgICJAZXNidWlsZC9mcmVlYnNkLWFybTY0IjogWyJAZXNidWlsZC9mcmVlYnNkLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi15WXErMzlObFRSelUyWG1vUFc0bDVJZnBsOWZxU2swbkFKWU0vVi9XVUdQRUZmZWsxZXBMSEpJa1RRTTZiQnMxc3dBcGpPNW5XZ3ZyODQzZzZUanh1UT09Il0sCgogICAgIkBlc2J1aWxkL2ZyZWVic2QteDY0IjogWyJAZXNidWlsZC9mcmVlYnNkLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiZnJlZWJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLTBGZ3ZPSjZVVU1mbHNIU1BMemRmRG5uQkJWb0NEdEJUVnluL01yV2xvVU52cS81U0ZtaDEzbDNkdmdSUGtEaWhSeGI3N1kxN01icWJDQWEyc3RyTVFRPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtYXJtIjogWyJAZXNidWlsZC9saW51eC1hcm1AMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTIta3JvNGMwUDg1R01mRllxVzRUV09wdm1GOHJGU2hiV0duckxxbHpwNFgxVE5XalJZM0pNWVVmREN0T3hQS09JWThCMFdDOEhONTFoR1A0STRoejRBYVE9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1hcm02NCI6IFsiQGVzYnVpbGQvbGludXgtYXJtNjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi0rODlVc1FUZlhkbWpJdlpTNm5Vbk9PTG9YbmtVVEI5aFI1UUFlTHJRZHpPU1dadk5TQVhBdGNSREhXdHFBVXRBbXY3Wk0xV1BPT2VTeER6enpNb2dpUT09Il0sCgogICAgIkBlc2J1aWxkL2xpbnV4LWlhMzIiOiBbIkBlc2J1aWxkL2xpbnV4LWlhMzJAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJpYTMyIiB9LCAic2hhNTEyLXlURWpvYXB5OFVQM3J2OGRCMGlwM0FmTXBSYnloU04zK2hZOG1vL2k0UVhGZUR4bWlZYkVLcDNaUmpCS2NPUDg2MlVhNGIxUERmd2x2YnV3WTdoSUdRPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtbG9vbmc2NCI6IFsiQGVzYnVpbGQvbGludXgtbG9vbmc2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItTmVxcVlrcmNHekZ3aTZDR1JHTk1PaldHR1NZT3Bxd0NqUzlmdmFVbFg1czN6d090bjFxd2cxczJpRTJzdkJlNFEvWU9HMXE2ODc1bGNBb1FLL0Y0VkE9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1taXBzNjRlbCI6IFsiQGVzYnVpbGQvbGludXgtbWlwczY0ZWxAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJub25lIiB9LCAic2hhNTEyLUljdlRsRjlkdExyZkwvTThXZ05JL3FKWUJFTlAzZWtnc0hiWVVJekV6cTVYSnp6VkVWL2ZYWTlXRlBmRUVYbXUzY2sycUpQOExHL3AzUThmN1pjMlhnPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtcHBjNjQiOiBbIkBlc2J1aWxkL2xpbnV4LXBwYzY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAicHBjNjQiIH0sICJzaGE1MTItSE95MGFMVEpUVnRvVGVHWmg0SFNYYU82TTk1cXU0azVsSmNINGd4djU2aWF5Y2Z6MVM4R08vNUpoNlg0WTFZaUkwaDdjUnlMaStIaXhNUis4OHN3YWc9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1yaXNjdjY0IjogWyJAZXNidWlsZC9saW51eC1yaXNjdjY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1pOEpVREF1ZnB6OWpPem80eUlTaENUY1h6UzA3dkVnV3p5WDNOSDJHN0xFRlZnckxFaGp3TDNhakZFNGZaSTNJNFpnaU03SkgzR1E3UmVPYlJPdlNVQT09Il0sCgogICAgIkBlc2J1aWxkL2xpbnV4LXMzOTB4IjogWyJAZXNidWlsZC9saW51eC1zMzkweEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogInMzOTB4IiB9LCAic2hhNTEyLWpGbnUrNlViTGx6SWpQUXBXQ05oNVF0cmNOZk1MamdJYXZud1BRQWZvR3g0cTE3b2NPVTlNc1EyUVZ2Rnh3UW9XcFpUOER2VExvb1R2bU9RWGtPNTFnPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgteDY0IjogWyJAZXNidWlsZC9saW51eC14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItNmUwY3ZYd3pPblZXSkhxK21za1A4RE5TcktCcjFiVUxCdm5GTHBjMUtZK2QraXJaU2daMDJUR3NlNUZzYWZLUzVqZzJlNHBidks2VFBYYUYvQTYrQ0E9PSJdLAoKICAgICJAZXNidWlsZC9uZXRic2QtYXJtNjQiOiBbIkBlc2J1aWxkL25ldGJzZC1hcm02NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibm9uZSIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItdlVua0JZeFpXNGhML2llOTFoU3FhU05qdWxPbllYRTFWU0x1c252SGcydTNqZXdKQnozWXpCOStvQ3c4REFCZVZxWkdnOTR0OXR5WkZvSG1hOGdXWlE9PSJdLAoKICAgICJAZXNidWlsZC9uZXRic2QteDY0IjogWyJAZXNidWlsZC9uZXRic2QteDY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJub25lIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItWEFnOHBJUW41Q3poT0I4b2RJY0FtNDJRc09mYTk4U0JlS1VkbzR4YThPdlg4TGJNWnFFdGdlV0U5UC9XeHQ3TWxHMlFxdmpHdGhzK25xNDhUclVpS3c9PSJdLAoKICAgICJAZXNidWlsZC9vcGVuYnNkLWFybTY0IjogWyJAZXNidWlsZC9vcGVuYnNkLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJvcGVuYnNkIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1DdDJXY0ZFQU5sRkR0cDFuVkFYU05CUER4eVUrajcrdElkLy9pSFhVMmYvbE41QW1PNHpMeWhEY3BSNUN6MXIwOG1WeHp0M0pweXQ0UG1YUTFPNis3QT09Il0sCgogICAgIkBlc2J1aWxkL29wZW5ic2QteDY0IjogWyJAZXNidWlsZC9vcGVuYnNkLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAib3BlbmJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLXhBR0doeU9ROU90bTFYdThOVDFpZkdMbkE2TTNzSnhaNml4eWxiK3ZJVVZ6dnZkNkdPQUxwd1FyWXJ0bFBvdU1xZC92U2JnZWh6NkhhVms0KzdBZmh3PT0iXSwKCiAgICAiQGVzYnVpbGQvc3Vub3MteDY0IjogWyJAZXNidWlsZC9zdW5vcy14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogInN1bm9zIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItTXcrdHp5NHBwNndaRUswK0x3cjc2cFdManJ0am1KeVVCMjN0SEtxRURQNzRSM3E5NWx1WS9iWHFYWmVZbDROWWx2d09xb1JLbEluUWlhbGdDS3k2N1E9PSJdLAoKICAgICJAZXNidWlsZC93aW4zMi1hcm02NCI6IFsiQGVzYnVpbGQvd2luMzItYXJtNjRAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1BVlVQNDI4VlFUU2RkZ3V6OWRPOW5nYitFNWFTY3lnN25PZUpEckYxSFBZdTU1NWdtemEzYkRHTVBobVZYTDhzdkRTb3FQQ3NDUGpiMjY1eUcva0xLUT09Il0sCgogICAgIkBlc2J1aWxkL3dpbjMyLWlhMzIiOiBbIkBlc2J1aWxkL3dpbjMyLWlhMzJAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJpYTMyIiB9LCAic2hhNTEyLWkxc1crMWkrb1d2UXpTZ2ZSY3h4RzJrNEk5bjNPOU5ScXk4VSt1dWdhVDJEeTdrTE85WTd3STcyaGFPYWh4Y2VNWDhoWkF6Z0dvdTFGaG5kUmxkeFJnPT0iXSwKCiAgICAiQGVzYnVpbGQvd2luMzIteDY0IjogWyJAZXNidWlsZC93aW4zMi14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItbk9UMnZaTnc2aEorejQzb1AxU1BlYS9HLzZBYk42WCtiR05oTnVxOE50Ukh5NHdzTWh3NzY1SUtMTm1uamVrN0d2aldCWVE4UTVWQm9ZVEZnOXkxVVE9PSJdLAoKICAgICJAZmxvYXRpbmctdWkvY29yZSI6IFsiQGZsb2F0aW5nLXVpL2NvcmVAMS43LjUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGZsb2F0aW5nLXVpL3V0aWxzIjogIl4wLjIuMTEiIH0gfSwgInNoYTUxMi0xSWg0V1RXeXcwK2xLeUZNY0JIR2JiNVU1RnR1SEp1dWpveXlyNXpUYVdTNUVZTWVUNkpiMkF1RGVmdHNDc0V1Y2hPK21NMmlqNStxOWNyaHlkekxoUT09Il0sCgogICAgIkBmbG9hdGluZy11aS9kb20iOiBbIkBmbG9hdGluZy11aS9kb21AMS43LjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGZsb2F0aW5nLXVpL2NvcmUiOiAiXjEuNy41IiwgIkBmbG9hdGluZy11aS91dGlscyI6ICJeMC4yLjExIiB9IH0sICJzaGE1MTItOWdaU0FJNVhNMzY4ODBQUE1tLy85ZGZpRW5nWW9DNkFtMml6RVMxRkY0MDZZRnNqdnlCTW1lSjJnNFNBanUzeFd3dHV5bk5SRkwyczloZ3hwTEk1U1E9PSJdLAoKICAgICJAZmxvYXRpbmctdWkvcmVhY3QtZG9tIjogWyJAZmxvYXRpbmctdWkvcmVhY3QtZG9tQDIuMS44IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBmbG9hdGluZy11aS9kb20iOiAiXjEuNy42IiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgInJlYWN0IjogIj49MTYuOC4wIiwgInJlYWN0LWRvbSI6ICI+PTE2LjguMCIgfSB9LCAic2hhNTEyLWNDNTJiSHdNL24vQ3hTODdGSDB5V2RuZ0VacmpkdExXL3FWcnVvNjhxZytwcks3WlE0WUdkdXQyR3lEVnBvR2VBWWUvaDg5OXJWZU9WbTZPaTQwazJBPT0iXSwKCiAgICAiQGZsb2F0aW5nLXVpL3V0aWxzIjogWyJAZmxvYXRpbmctdWkvdXRpbHNAMC4yLjExIiwgIiIsIHt9LCAic2hhNTEyLVJpQi95SWg3OHBjSXhsNmxMTUcwQ2dCWEFaMlkwZVZIcU1QWXVndSs5VTBBZVQ2WUJlaUpwZjdsYmRKTkl1Z0ZQNVNJandOUmdvNERoUjFReGkyNkdnPT0iXSwKCiAgICAiQGltZy9jb2xvdXIiOiBbIkBpbWcvY29sb3VyQDEuMS4wIiwgIiIsIHt9LCAic2hhNTEyLVRkNzZxN2o1N28vdExWZGdTNzQ2Y1lBUmZTeXhrOGlFZlJ4ZXdMOWg0T016WWhiVzRUQWNwcGwwbVQ0ZXlxWGRkaDZML2p3b003NW1vN2l4YS9wQ2VRPT0iXSwKCiAgICAiQGltZy9zaGFycC1kYXJ3aW4tYXJtNjQiOiBbIkBpbWcvc2hhcnAtZGFyd2luLWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiAiMS4yLjQiIH0sICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLWltdFEzV01KWGJNWTRmeGIvTmRwNkhCVE5WdFdDVUkwV2RvYnloZUdmNSthZDZ4WDhWSURPOHUyeEU0cWMvZnIwOENLRy83ZERzZUZ0bjZNNmcvcjN3PT0iXSwKCiAgICAiQGltZy9zaGFycC1kYXJ3aW4teDY0IjogWyJAaW1nL3NoYXJwLWRhcndpbi14NjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWRhcndpbi14NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1ZTkVGQUYvNEtRL1BlVzBOK3IrYVZWc29JWTAvcXh4aWtGMlNXZHArTlJrbU1CN3k5TEJaQVZxUTR5aEdDbS9IM0gyNzBPU3lrcW1RTUtMQmhCSkRFdz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjRAMS4yLjQiLCAiIiwgeyAib3MiOiAiZGFyd2luIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi16cWpqbzdSYXRGZkZvUDBNa1E1MWpmdUZaQm5WRTJwUmlheWRLSjFHL3JIWnZuc3JIQU9jUUFMSWk5c0E1Y281eGVuUWRUdWdDdnRiMWN1Zjc4VmY0Zz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4teDY0IjogWyJAaW1nL3NoYXJwLWxpYnZpcHMtZGFyd2luLXg2NEAxLjIuNCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi0xSU9kNXhmVmhsR3dYK3pYdjJOOTNrMHlNT052VWxBTnlsYkp3MWVUYWg4Sy9KdHBpMTVLQytXU2lhWC9uQm1ibTJIeFJNMWdaMG5TZGpTc3JaYkdLZz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm0iOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm1AMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybSIgfSwgInNoYTUxMi1iRkk3eGNLRkVMZGlOQ1ZvdjhlNDRJYTR1MmJ5QStsM1h0c0FqK1E4dGZDd082QlE4aURvallkdm9QTXFzS0RrdW9PbytYNkhaQTBzMHExMUFOTVE4QT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm02NCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybTY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1leGNqWDhEZnNJY0oxMHgxS3pyNFJjV2UxZWRDOVBxdURSUlB4M1lWQ3ZRditVNXA3WWluMnMzMmZ0emlrWG9qYjFQSUZjLzlNdDI4L3kraVJrbGtydz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1wcGM2NCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi1GTXV2R2lqTERZRzZsVytiL1V2eWlsVVd1NUF5dSszcjJkMVM4bm90aUdDSXlZVS83NmVpZzFVZk1ta1o3dndnT3J6S3psUWJGU3VRZmdtN0dZVVBwQT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1yaXNjdjY0IjogWyJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgtcmlzY3Y2NEAxLjIuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1vVkRiY1I0elVDMGNlODJ0ZXViU20reDZFVGl4dEtaQmgvcWJSRUlPY0kzY1VMekR5YjE4U3IvV2N5eDdOUlFlUXpPaUhUTmJaRkYxVXdQUzJzY3lHQT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1zMzkweCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXMzOTB4QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJzMzkweCIgfSwgInNoYTUxMi1xbXA5VnJ6Z1BnTW9HWnlQdnJRSHFrMDJ1eWpBMC9RclRPMjZUcWs2bDRaVjBNUFdJVzZMVGtxT0lvditKMXlFdTdNYkZRYURwd2R3SktoYkp2dVJ4UT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjRAMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi10SnhpaUxzbUhjOUF4MWJ6M29hT1lCVVJUWEdJUkRPREJxaHZlVkhvbnJISjkvK2s4OXFiTGwwYmNKbnMrZTR0NHJ2YU5CeGFFWnNGdFNmQWRxdVBydz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjRAMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLUZWUUh1d3gxSUl1Tm93OVFBYllVekorRW44S2NWbTlMazUrdUdVUUpIYVptTUVDWm1PbGl4OUhuSDduMVRSa1hNUzBwR3hJSm9rSVZCOVN1cVpHR1h3PT0iXSwKCiAgICAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4bXVzbC14NjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wteDY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItK0xweUJrN0w0NFpJWHd6L1ZZZmdsYVgvb2t4ZXpFU2M2VXhEU295bzJLczZKeGM0WTdzR2pwZ1U5czRQTWdxZ2pqMWdaQ3lsVGllTmFtcUExTUY3RGc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4LWFybSI6IFsiQGltZy9zaGFycC1saW51eC1hcm1AMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybSI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItOWRMcXN2d3RnMXV1WEJHWktzeGVtOTU5NSt1anYwc0o2Vmk4d2NUQU5TRnB3Vi9HT05hdDVlQ2t6UW8vMU82elJJa2gwbS84KzVCanJScjdqRFVTWnc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4LWFybTY0IjogWyJAaW1nL3NoYXJwLWxpbnV4LWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm02NCI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1iS1F6YUpSWS9ia1BPWHlLeDVFVnVwN3FrYW9qRUNHNk5MWXN3Z2t0T1pqYVhlY1NBZUNXaVp3d2lGZjMvWStPMUhyYXVpRTNGVnNHeEZnOGMyNHJaZz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGludXgtcHBjNjQiOiBbIkBpbWcvc2hhcnAtbGludXgtcHBjNjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0IjogIjEuMi40IiB9LCAib3MiOiAibGludXgiLCAiY3B1IjogInBwYzY0IiB9LCAic2hhNTEyLTd6em53TmFxVzZZdHNmckdHREE2QlJrSVNLQUFFMUpvMFFkcE5ZWE5NSHUyKzBkVHJQZmxUTE5rcGM4bDdNVVA1TTE2WkpjVXZ5c1ZXV3JNZWZacXVBPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eC1yaXNjdjY0IjogWyJAaW1nL3NoYXJwLWxpbnV4LXJpc2N2NjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXJpc2N2NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi01MWdKdUxQVEthN3BpWVBhVnM4R21CeW83L1U3LzdUWk9xK2NuWEpJSFpLYXZJUkhBUDc3ZTNOMkhFbDNkZ2lxZEQvdzB5VWZpSm5JSTc3UHVEREZkdz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGludXgtczM5MHgiOiBbIkBpbWcvc2hhcnAtbGludXgtczM5MHhAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXMzOTB4IjogIjEuMi40IiB9LCAib3MiOiAibGludXgiLCAiY3B1IjogInMzOTB4IiB9LCAic2hhNTEyLW5RdENrMFBkS2ZobzNlQzVNcmJRb2lnSjJnZDFDZ2RkVU1rYWJVaityQmV2czh0WjJjVUxPeDQ2RTdveVgrMDRXR2ZBQmdJd21NQzBWcWllVGlSNGpnPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eC14NjQiOiBbIkBpbWcvc2hhcnAtbGludXgteDY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLU1FemQ4SFBLeFZ4VmVud0FhK0pSUHdFQzdRRmpvUFd1UzVOWm5CdDZCM3B1N0VHMkdlMGlkMW9MSFpwUEpkbjNPUUsrQlFEaXc5elN0aUhCVEpRUVFRPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eG11c2wtYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGludXhtdXNsLWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItZnBySlI2R3RSc010Nkt5ZnE0NElzQ2hWWmVHTjk3Z1REMzMxd2VSMWV4MWMxcnlwREVBQk42VG0yeGExd0U2bFliNURkRW5rMDNOWlBxQTdJZDIxeWc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4bXVzbC14NjQiOiBbIkBpbWcvc2hhcnAtbGludXhtdXNsLXg2NEAwLjM0LjUiLCAiIiwgeyAib3B0aW9uYWxEZXBlbmRlbmNpZXMiOiB7ICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXhtdXNsLXg2NCI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSmc4d05UMU1Vekl2aEJGeFZpcXJFaFdER3pxeW1vM3NWN3o3WnNhV2JaTkRMWFJKWm9SR3JqdWxwNjBZWXRWNHdmWThWSUtjV2lkam9qbExjV3JkOFE9PSJdLAoKICAgICJAaW1nL3NoYXJwLXdhc20zMiI6IFsiQGltZy9zaGFycC13YXNtMzJAMC4zNC41IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvcnVudGltZSI6ICJeMS43LjAiIH0sICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1PZFdURWlWa1kyUEh3cWtiQkk4ZnJGeFFRRmVrSGFTU2tVSUprd3pjbFdaZTY0TzFYNFVsVWpxcXFMYVBiVXBNT1FrNkZCdS9IdGxHWE5ibElzMGh1dz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzItYXJtNjQiOiBbIkBpbWcvc2hhcnAtd2luMzItYXJtNjRAMC4zNC41IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1XUTNBZ1dDV1lTYjJ5dCtJRzhtbkM2SmRrOVdoczdPMGd4cGhibHNMdmRoU3BTVHRtdTY5WkcxR2tiNk51dnhzTkFDd2lQVjZjTlNaTnp0MEtQc3c3Zz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzItaWEzMiI6IFsiQGltZy9zaGFycC13aW4zMi1pYTMyQDAuMzQuNSIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAiaWEzMiIgfSwgInNoYTUxMi1GVjltLzdObWVDbVNIREQ1ajQrNHBOSThDcDNhVytKdkxvWGNUVW8wSXF5alNmQVpKOGRJVW1pangxcWFKc0lpVStIb3N3NnhNNUtpakFXUkpDU2dOZz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzIteDY0IjogWyJAaW1nL3NoYXJwLXdpbjMyLXg2NEAwLjM0LjUiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi0rMjlZTXNxWTIvOWVGRWlXOTNlcVdudUxjV2N1Zm93WGV3d1NOSVQ2VXdaZFVVQ3JNM29Gak1XSC9aNi9UTW1iNGhsRmVubWZBVmJwV2V1cDJqcnlDdz09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogWyJAanJpZGdld2VsbC9nZW4tbWFwcGluZ0AwLjMuMTMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjIjogIl4xLjUuMCIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjQiIH0gfSwgInNoYTUxMi0ya2t0LzduaUo2TWdFUHhGMGJZZFE2ZXRaYUErZlF2RGNMS2NraHkxeUlRT3phb0tqQkJqU2o2My9hTFZqWUUzcWhSdDVkdk0rdVV5ZkNnNlVLQ0JiQT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3JlbWFwcGluZyI6IFsiQGpyaWRnZXdlbGwvcmVtYXBwaW5nQDIuMy41IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogIl4wLjMuNSIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjQiIH0gfSwgInNoYTUxMi1MSTl1LytsYVlHNERzMVRES1NKVzJZUHJJbGNWWU93aTJmVUM2eEI0M2x1ZUNqZ3hWNGxmZk9DWkN0WUZpSDZUTk9YK3RRS1h4OTdUNElLSGJoeUhFUT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3Jlc29sdmUtdXJpIjogWyJAanJpZGdld2VsbC9yZXNvbHZlLXVyaUAzLjEuMiIsICIiLCB7fSwgInNoYTUxMi1iUklTZ0NJalAyMC90YldTUFdNRWk1NFFWUFJaRXhrdUQ5bEpMK1VJeFVLdHdWSkE4d1cxVHJiMWpNczFSRlhvMUNCVE5aLzVocEM5UXZtS1dkb3BLdz09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3NvdXJjZS1tYXAiOiBbIkBqcmlkZ2V3ZWxsL3NvdXJjZS1tYXBAMC4zLjExIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogIl4wLjMuNSIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjUiIH0gfSwgInNoYTUxMi1aTXAxVjhaRmNQRzVkSVduUUxyM05TSTFNaUNVN1VFVGRTL0EwRzhWL1hXSHZKdjNac0ZxdXRKbjFZNVJQbUFQWDZGM0JpRTM5N09xdmVVLzlOQ3VJQT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3NvdXJjZW1hcC1jb2RlYyI6IFsiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjQDEuNS41IiwgIiIsIHt9LCAic2hhNTEyLWNZUTkzMTBncnF4dWVXYmwrV3VJVUlhaVVhRGNqN1dPcTVmVmhFbGpOVmdSZk9VaFk5ZnkyelR2Zm9xV3NuZWJoOFNsNzBWU2NGYklDdkpuTEtCME9nPT0iXSwKCiAgICAiQGpyaWRnZXdlbGwvdHJhY2UtbWFwcGluZyI6IFsiQGpyaWRnZXdlbGwvdHJhY2UtbWFwcGluZ0AwLjMuMzEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvcmVzb2x2ZS11cmkiOiAiXjMuMS4wIiwgIkBqcmlkZ2V3ZWxsL3NvdXJjZW1hcC1jb2RlYyI6ICJeMS40LjE0IiB9IH0sICJzaGE1MTItenpOUitTZFFTREp6Yzhqb2FlUDhRUW9DUXI4TnVZeDJkSUl5dGwxUWVCRVpISjl1VzZoZWJzcllnYno4aEp3VVFhbzNUV0NNdG1mVjhOdTF0d09MQXc9PSJdLAoKICAgICJAbmFwaS1ycy93YXNtLXJ1bnRpbWUiOiBbIkBuYXBpLXJzL3dhc20tcnVudGltZUAxLjEuNCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAdHlieXMvd2FzbS11dGlsIjogIl4wLjEwLjEiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQGVtbmFwaS9jb3JlIjogIl4xLjcuMSIsICJAZW1uYXBpL3J1bnRpbWUiOiAiXjEuNy4xIiB9IH0sICJzaGE1MTItM05RTk5nQTFZU2xKYi9rTUgxaWxkQVNQOUhXNy83a1luUkkyc3pXSmFvZmFTMWhXbWJHSTRIK2QzKzIyYUd6WFhOOUlKK24rR2lGVmNHaXBKUDE4b3c9PSJdLAoKICAgICJAbmV4dC9lbnYiOiBbIkBuZXh0L2VudkAxNi4yLjYiLCAiIiwge30sICJzaGE1MTItZ2Q4SG9ITjR1Zmo3M1dtUjNKbVZvbHJwSlI0N0lMSzZMb3VQNXhFbFBnbGFWeGlyNmUxYTdWenZUdkRXa09vUFhUOXJra1R6eUN4QnU0eWVaZlp3Y3c9PSJdLAoKICAgICJAbmV4dC9zd2MtZGFyd2luLWFybTY0IjogWyJAbmV4dC9zd2MtZGFyd2luLWFybTY0QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVpKR2trY05mWWdyck1rcU9kWjd6b0xhMVRPeTBxcGNNZmsvejRNaC9GS1V6NDBnVk8rSE5RV3FtTHhmNjdaNVdCNjREUnAwZGhFYnlIZmVsKzZzSlVnPT0iXSwKCiAgICAiQG5leHQvc3djLWRhcndpbi14NjQiOiBbIkBuZXh0L3N3Yy1kYXJ3aW4teDY0QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi12L1lMQkhJWTEzMkNlZDNwdUJKN1lKS3cxbHFzQ3JnY05vMmFSSmxDRXlRcnJDZVJKbHZHbG5teGhQeE5RSTNLRTNOMURONXI5VFBOUHZrYTNucTVSUT09Il0sCgogICAgIkBuZXh0L3N3Yy1saW51eC1hcm02NC1nbnUiOiBbIkBuZXh0L3N3Yy1saW51eC1hcm02NC1nbnVAMTYuMi42IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1SUE92cWxZQmJjUWprejlWUVFEWjJUMmJBUklqWFpWMUtGbHQrVjJNcjZTVy9lNEk5ZmNLc2FBMGhkeWYyRkhvVGxzVjJ4bkJkNVk5MTJyUC8xQ2U2dz09Il0sCgogICAgIkBuZXh0L3N3Yy1saW51eC1hcm02NC1tdXNsIjogWyJAbmV4dC9zd2MtbGludXgtYXJtNjQtbXVzbEAxNi4yLjYiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVVSVVR1MStkTWt4SnNQRmdtK09lRXZxOXdmNXN1ancwRXZnWXk4MFRER0hUU0xUbklIZXFiMEV1OEEzc0M5NUlSZ2plalFMK2tDNG13KzR5UHhpQVhBPT0iXSwKCiAgICAiQG5leHQvc3djLWxpbnV4LXg2NC1nbnUiOiBbIkBuZXh0L3N3Yy1saW51eC14NjQtZ251QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLURPajE4Mm1QVjhHM1VrcmF5TG9SRU01WUVZSStEazV3djdPeDl4bDFmRmliQUVMRXNGRDBsRFBmSEllSUxsdXRNTWZkeWhsellQRUxHM3BldUthdXJ3PT0iXSwKCiAgICAiQG5leHQvc3djLWxpbnV4LXg2NC1tdXNsIjogWyJAbmV4dC9zd2MtbGludXgteDY0LW11c2xAMTYuMi42IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSEtRNVNQL1YvdWI3M1V2RjduL3plSmx4azJrTG10TDdXenJnNFdmbWtqbU5vczVvbkoydEt1N3laT1BkTDE4QTZTdmZuM21heDI5eW0rcnk3TmtLNGc9PSJdLAoKICAgICJAbmV4dC9zd2Mtd2luMzItYXJtNjQtbXN2YyI6IFsiQG5leHQvc3djLXdpbjMyLWFybTY0LW1zdmNAMTYuMi42IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1MWlhwVGxQeVM1djdIaFNtbnZzTEdQM2lJWWdZT0JuYzhyOEFybFQ1NXNHSFY4OWJSMkhsRGRCaldRK1BZNlNKTW1rOFR1VkdGdXhhbG5QM2svMER3Zz09Il0sCgogICAgIkBuZXh0L3N3Yy13aW4zMi14NjQtbXN2YyI6IFsiQG5leHQvc3djLXdpbjMyLXg2NC1tc3ZjQDE2LjIuNiIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLUYwKzRpMGg5SjZDNGVFM0VBUFdzb0NrN1VXL2Riek9qeXp4WTBxbkRVT1lGdTZGRm1kWjZsOTcvWGRWMy9OejNWWXlPN1VXanlFSlVYa0dxY29YZk1BPT0iXSwKCiAgICAiQG94Yy1wcm9qZWN0L3R5cGVzIjogWyJAb3hjLXByb2plY3QvdHlwZXNAMC4xMzAuMCIsICIiLCB7fSwgInNoYTUxMi1pYkQydXN4OUpSdTdmNXB1MnRNS01JNGNwQTROZ1hKUW9ZUlA0cFE3UHhtbjFsNmsvNTNxV3RRV1pheWhZeTNYNFFaa3Q5ME90K21KRWFlWG91aW82UT09Il0sCgogICAgIkBwbGF5d3JpZ2h0L3Rlc3QiOiBbIkBwbGF5d3JpZ2h0L3Rlc3RAMS42MC4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInBsYXl3cmlnaHQiOiAiMS42MC4wIiB9LCAiYmluIjogeyAicGxheXdyaWdodCI6ICJjbGkuanMiIH0gfSwgInNoYTUxMi1PNzF5WkliQWgvUHhETU5HbnMzN0dIQklmclZrRVZ5bitBWHlJYTVkT1RmYjQveE52UldWK1Z2L05NYk5DdE9EQi9wTzd2TGxGMk9UbU1WTGhtcjdBZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWFuZHJvaWQtYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLWFuZHJvaWQtYXJtNjRAMS4wLjEiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItZkpJM0kwcjNDM09qL3pkQkNwYUNtQlJaWWYwN3hwYXE0eUNmRERvU0ZtK2JlV056YklsMjZwdVc4UnJhVWR1Z29Kdy85NXplck5PbjZqYXNBaHpTbWc9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1kYXJ3aW4tYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLWRhcndpbi1hcm02NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLWNLbkFoV0VzVjdUUGNBLzVFQXRlRHA2S2NKWkJRMkcrQnFFN3pheU1NaTdrTXZ3UnNidjdXVDlhT25uMFdObDRTS0VJZjQzdmpTMzFpVVB1ODBuelhnPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NCI6IFsiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1ZS3JWd1FqSVJCUG8rNUcvdTAzd0dqYmR5NHE3cHl6Q2U5M0RLOVZKN3prVm1lZzhMSjdHYmdzaUhXZFI0eFNvZTRDQVhSRDdCY2pnYnRyNjRia1hOZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWZyZWVic2QteDY0IjogWyJAcm9sbGRvd24vYmluZGluZy1mcmVlYnNkLXg2NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItei9vQnNSRW80NlNzRnFCd1l0RmUwa3BKZUJpakFUNDhPL1dYTEk0c3VpQ0xCa3IwM1JUdFRKTUN6U2REZDJ6bmxoOFZKaXpMMDlYVmtRZ2s4SVpvbnc9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmQDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItaWs4cTdHTTExenh2WXhGYzJQZURjVDZUQnZoQ1FNYVV4ZnBoL001bDlzS3VUcy9TamczTCtCeXcwRjd3MFpWTEJabXgzMFArZ0cwRUN6ek4rTUZjbVE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1nbnUiOiBbIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LWFybTY0LWdudUAxLjAuMSIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItUW9TeDJFa3lycmRaNmtjeUU4c3RxWjYydDBZcmE4RnM1aWE5bE94SnJoNlRNUUpLN2dRS21zY2RUSGY3cE9YS1JFS3JWd090SmNRRzNxVlNmYzg2NkE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsQDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi11d053RnB3S2VOaVphd2ZBV0JnZzBWSXp0UFRWM2loaGgxdlYzMzRoOWl2bk5Mb3J4blFNVTZGejh3RzFaYjRRaDlMQzEvTWtjeVQzWWxEWEczUnNnZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXBwYzY0LWdudSI6IFsiQHJvbGxkb3duL2JpbmRpbmctbGludXgtcHBjNjQtZ251QDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi16WTFidWw3T1dyN0RGQmlKKyt3b2ZYdm5yOEI0NWNlM1FzUVVoS3JJaFhzeWdBaDdiVGt3eWVNMWJpMWEyZzVDL3lDL044VFp5R0RFb01mbS9sOW1wZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXMzOTB4LWdudSI6IFsiQHJvbGxkb3duL2JpbmRpbmctbGludXgtczM5MHgtZ251QDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJzMzkweCIgfSwgInNoYTUxMi0wZnJsc1QvZjRGdDZJN1NNRVNUS25GM2Nac2RpY1FuMWRDTWtGL2pUOXdETEUrZ0dvaVFmdjFubVQ5ZStzN3MvZmVrdnZ5NnRaTTJqSHZJMnRrYkpEUT09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1nbnUiOiBbIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1nbnVAMS4wLjEiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1YQUJWbUdwOVRnMFdzcFRWdndkdVRjNGZwcXk2Sm5BVXJTUWU2T3V5cUQvMDNuSTdyME85T1dVa01Jd0ZyaktBSXFvbHZxb0E0WnJKcHBnd0UwR3htdz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1tdXNsIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC14NjQtbXVzbEAxLjAuMSIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLWJWNGZ6c3d1elZjS0Q5MG8vVk02UXFLeG54bERxMGcyQklTRExOVm14cm5ocHYxRERieVBoQ0lqWWZ2ellMVitNdmtLS25RdDJRNkFPODZTRUJVTFVRPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctb3Blbmhhcm1vbnktYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLW9wZW5oYXJtb255LWFybTY0QDEuMC4xIiwgIiIsIHsgIm9zIjogIm5vbmUiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLS9NaDBaaHEzT1A3ZlZzMGtjUUhaUDZsWkV0aE1HVGFTZjhVQlFZU0ZFWkRXR1hYbEVDK25KNkVxZW5hSzJ0NExCWE1lM0ErSy9HMkJWWFhkdE9yNFBRPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctd2FzbTMyLXdhc2kiOiBbIkByb2xsZG93bi9iaW5kaW5nLXdhc20zMi13YXNpQDEuMC4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvY29yZSI6ICIxLjEwLjAiLCAiQGVtbmFwaS9ydW50aW1lIjogIjEuMTAuMCIsICJAbmFwaS1ycy93YXNtLXJ1bnRpbWUiOiAiXjEuMS40IiB9LCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItKzF4YzlYNDVsOHVmc0JBbTZHanZ4MnFEUklZOWxUVnQwY2dXTmNKKzFnZGhYdmtieGVQQTYweVJUd1NUdVhMMDlDTWh5Sm1qcFY3RTNOb3l4YnFGUVE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjIjogWyJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjQDEuMC4xIiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi0xRCtVcVpkZm51UitKeTFHZ01Kd2k4NWJENDBIMjF1Tm1PUFJXUWh3NG9SU3VvbFovQjVyaXhaNDVESzJLWE9UQ3ZtVkNlY2F1V2dFaGJ3OGJJN3RPdz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLXdpbjMyLXg2NC1tc3ZjIjogWyJAcm9sbGRvd24vYmluZGluZy13aW4zMi14NjQtbXN2Y0AxLjAuMSIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLUlOQXljYVd1aGxPSzN3azRtUkhHc2Rnd1lXbWQ5Y0NoZFBkRTlid1dteTZybjlWcVZOWU5GR2hPZFhyb2ZYVXh3SEluY1NpUE5iOHRObThrbkRWSWVRPT0iXSwKCiAgICAiQHJvbGxkb3duL3BsdWdpbnV0aWxzIjogWyJAcm9sbGRvd24vcGx1Z2ludXRpbHNAMS4wLjEiLCAiIiwge30sICJzaGE1MTItMmo5Ykd0NUpoOGhqK3ZQdGd6UHRsNzJqMHlSeEhBeXVtb282VE5mQWpzTEIwNFV0cFN2UGJQY0RjQk14ejduKzlDWUIwYzFHeFFGeFlSZzJqaW1xR3c9PSJdLAoKICAgICJAc3RhbmRhcmQtc2NoZW1hL3NwZWMiOiBbIkBzdGFuZGFyZC1zY2hlbWEvc3BlY0AxLjEuMCIsICIiLCB7fSwgInNoYTUxMi1sMmFGeTVqQUxobmlHNUhncXJENmpYTGkvclVXckt2cU4vcUp4NnlvSnNnS2hibFZkK2lxcVU0UkNYYXZtL2pQaXR5RG81VEN2S01ucGpLbk9yaXkwdz09Il0sCgogICAgIkBzd2MvaGVscGVycyI6IFsiQHN3Yy9oZWxwZXJzQDAuNS4xNSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi44LjAiIH0gfSwgInNoYTUxMi1KUTVUdU1pNDVPd2k0L0JJTUFKQm9TUW9PSnUxMm9Pay9nQURxbGNVTDlKRWRIQjh2eWpVU3N4cWVOWG5tWEhqWUtNaTJXY1l0ZXpHRUVocVVJL0UyZz09Il0sCgogICAgIkB0YWJieV9haS9oaWpyaS1jb252ZXJ0ZXIiOiBbIkB0YWJieV9haS9oaWpyaS1jb252ZXJ0ZXJAMS4wLjUiLCAiIiwge30sICJzaGE1MTItcjViQ2xLcmNJdXNEb28wNDlkU0w4Q2F3bkhSNm1SZER3aGxRdUlnWlJOdHk2OHEweDhrM0xmMUJ0UEFNeFJmL0dnbkhCbklPNHVqZDMrR1FkTFd6eFE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvbm9kZSI6IFsiQHRhaWx3aW5kY3NzL25vZGVANC4zLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvcmVtYXBwaW5nIjogIl4yLjMuNSIsICJlbmhhbmNlZC1yZXNvbHZlIjogIl41LjIxLjAiLCAiaml0aSI6ICJeMi42LjEiLCAibGlnaHRuaW5nY3NzIjogIjEuMzIuMCIsICJtYWdpYy1zdHJpbmciOiAiXjAuMzAuMjEiLCAic291cmNlLW1hcC1qcyI6ICJeMS4yLjEiLCAidGFpbHdpbmRjc3MiOiAiNC4zLjAiIH0gfSwgInNoYTUxMi1hRmI0Z1VoRk9nZGg5QVhvNEl6QkVPekJra0F4bTlWaWd3REpuTUlZdjNsY2ZYQ0pWZXNOZmJFYUJsNEJOZ1ZSeWlkOTJBbWR2aXF3QlVCUktTZVkzZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZSI6IFsiQHRhaWx3aW5kY3NzL294aWRlQDQuMy4wIiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQHRhaWx3aW5kY3NzL294aWRlLWFuZHJvaWQtYXJtNjQiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtZGFyd2luLXg2NCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtZnJlZWJzZC14NjQiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybS1nbnVlYWJpaGYiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybTY0LWdudSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtbXVzbCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LWdudSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LW11c2wiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLXdhc20zMi13YXNpIjogIjQuMy4wIiwgIkB0YWlsd2luZGNzcy9veGlkZS13aW4zMi1hcm02NC1tc3ZjIjogIjQuMy4wIiwgIkB0YWlsd2luZGNzcy9veGlkZS13aW4zMi14NjQtbXN2YyI6ICI0LjMuMCIgfSB9LCAic2hhNTEyLUY3SFpHQmVOOUkwL0F1dUpTNVB3Y0Q4eGF5eDVyaTVHaGpZVURCRVZZVWtleHlBL2dpd2JETmpSVnJ4U2V6RTNUMjUwT1UySy93cC9sdFd4M1VPZWZnPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWFuZHJvaWQtYXJtNjQiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1hbmRyb2lkLWFybTY0QDQuMy4wIiwgIiIsIHsgIm9zIjogImFuZHJvaWQiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVRKUGlxNjd0S2xMdU9iUDZSa3d2VkdEb3hDTUJWdERnS2tMZmEvdXlqNy9GeXh2UXdIUytVT25WclhYZ2JFc2ZVYU1naVZ2QzRLYkpuUnIyNmhvNE5nPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NCI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NEA0LjMuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLW9NTi9XWlJiK1NPMzdCbVVFbEVnZUVXdVU4RS9IWFJraU9EeEp4TGUxVVRIVlhMcmRWU2dmYUpWN3BTbGhSR01TT2lYTHV4VElqZnNGM3dZdno4Y2dRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi14NjQiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1kYXJ3aW4teDY0QDQuMy4wIiwgIiIsIHsgIm9zIjogImRhcndpbiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLU42Q1VtdTRhNmJLVkFEZnc3N3AraXc2WWQ5UTNPQmhlMHZlYURYK1FhemZ1VllsUXNIZkRneEJyc2pRL0lXK3p5d0w4bVRyTmQwU2RKVC96Z3R2TWRBPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWZyZWVic2QteDY0IjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtZnJlZWJzZC14NjRANC4zLjAiLCAiIiwgeyAib3MiOiAiZnJlZWJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLXpETDVoQmtRZEg1QzZNcHFiSzNnUUFnUDgwdHNNd1NJMjZ2ak96akp0TkNNVW8wbEZnT0l0ekhLQkl1cE9aTlF4dDNvdVBIN1JQaHZOaGlUZkNlNUNRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybS1nbnVlYWJpaGYiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC1hcm0tZ251ZWFiaWhmQDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItUjA2SGROaTdBN09Fb01zZjZkNHRqWjcxUkNXblpRUEhqMm1ub3RTRlVSak5MZEJDK2NJZ1hRN2w4MUNxZW9pUWZ0amY2T09ibHhYTUluTWdOMlZ6TUE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtZ251IjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtZ251QDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1xVEpIRUxYOGpldGpoUlFIQ0xpbGtWTG15YnB6TlFBdGFJL2dhb1ZvaWRuL3VmYk5EYkFvOEtsSzJKK3lQb2M4d1F4dkR4Q21oLzVscjhuQzErbFRiZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC1hcm02NC1tdXNsIjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtbXVzbEA0LjMuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItWjZzdWtpUXNuZ25XTytsMzlYNHBQYmlXVDgxSUMrUExLRitQSHhJbHlaYkdOYjlNT0RmWWxYRVZsRnZlajVCT1pJbldYMDFrVnl6ZUx2SHNYaGZjelE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LWdudSI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LXg2NC1nbnVANC4zLjAiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1EUk5kUVJwU0d6UkdmQVJWdVZreHZNOFExMm5oMTlsNEJGL0c3ekdBMW9lKzl3Y0M2c2FGQkhUSVNycEljS3poaVh0U3JsU3JsdUNmdk11bGVkb0NUUT09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC14NjQtbXVzbCI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LXg2NC1tdXNsQDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItWjBJQURiRG84Ymg2STdoMklRTXg2MDFBZFhCTGZGcEVkVW90ZnQ4NmV2ZC84WlBmbFplOUNPUE84UTF2dytwZkxXSVVvOXpOL0pHWnZ3dUFKcWR1cWc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kiOiBbIkB0YWlsd2luZGNzcy9veGlkZS13YXNtMzItd2FzaUA0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAZW1uYXBpL2NvcmUiOiAiXjEuMTAuMCIsICJAZW1uYXBpL3J1bnRpbWUiOiAiXjEuMTAuMCIsICJAZW1uYXBpL3dhc2ktdGhyZWFkcyI6ICJeMS4yLjEiLCAiQG5hcGktcnMvd2FzbS1ydW50aW1lIjogIl4xLjEuNCIsICJAdHlieXMvd2FzbS11dGlsIjogIl4wLjEwLjEiLCAidHNsaWIiOiAiXjIuOC4xIiB9LCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItSE5aR09VeEVtRWxrc1lSN1M2c0M1alRlTkdwb2JBc3k5dTdHdTBBc2tKOC8yMEZSOUdxZWJVeUIrSEJjVS9heDZCSHVpdUppK09kYTRCK1lYNkgxeUE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2luMzItYXJtNjQtbXN2YyI6IFsiQHRhaWx3aW5kY3NzL294aWRlLXdpbjMyLWFybTY0LW1zdmNANC4zLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVBlK1JQVlRpMVQrcXltdXVScGNkdndTVlpqbmxsL2Y3bjhnQnhNTWgzeExUY3RNREtxcGRmR2ltYk15aW9xdExoVVlaeGRKOXdHTmhWN01LSHZnWnNRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLXdpbjMyLXg2NC1tc3ZjIjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtd2luMzIteDY0LW1zdmNANC4zLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1NdnJmMmtYVy95ZVcvT1RlelpsQ0dPaXJYUmNVdUxJQngvNVkxMkJhUE03d0pvcnlHNmRmUy9OSkw4YUJQcXRURXgvVm00VDR2S3pGVWNLRFQrVEtVQT09Il0sCgogICAgIkB0YWlsd2luZGNzcy9wb3N0Y3NzIjogWyJAdGFpbHdpbmRjc3MvcG9zdGNzc0A0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYWxsb2MvcXVpY2stbHJ1IjogIl41LjIuMCIsICJAdGFpbHdpbmRjc3Mvbm9kZSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUiOiAiNC4zLjAiLCAicG9zdGNzcyI6ICJeOC41LjEwIiwgInRhaWx3aW5kY3NzIjogIjQuMy4wIiB9IH0sICJzaGE1MTItSm0wNVRqeCs5eUNMR3Y1cXcxYys4NFBzZHM4TW55ckVRWUNCK0ZGazJsZ0dpVWpsUnFkeGtlNG1WVHVZcmoyeG5WWnFLaW0yQXByNXlTdVFSWUF3L3c9PSJdLAoKICAgICJAdHlieXMvd2FzbS11dGlsIjogWyJAdHlieXMvd2FzbS11dGlsQDAuMTAuMiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi40LjAiIH0gfSwgInNoYTUxMi1Sb0J2SjJYMHd1S2xXRklqcndmZkd3MUlxWkhLUXF6SWNoS2FhZFpaZm5OcHNBWXAybU0waDM2SnRQQ2pOREFIR2dZZXovMTV1TUJwZkd3Y2hoaU1nZz09Il0sCgogICAgIkB0eXBlcy9jaGFpIjogWyJAdHlwZXMvY2hhaUA1LjIuMyIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAdHlwZXMvZGVlcC1lcWwiOiAiKiIsICJhc3NlcnRpb24tZXJyb3IiOiAiXjIuMC4xIiB9IH0sICJzaGE1MTItTXc1NThvZUE5ZkZidjY1L3k0bUh0WERzOWJQbkZNWkFML2p4ZFBGVXBPSEhJWFg5MW1jZ0VIYlM1TGFocitwd1pGUjhBN0dRbGVSV2VJNmNHRkMyVUE9PSJdLAoKICAgICJAdHlwZXMvZGVlcC1lcWwiOiBbIkB0eXBlcy9kZWVwLWVxbEA0LjAuMiIsICIiLCB7fSwgInNoYTUxMi1jOWg5ZFZWTWlnTVBjNGJ3VHZDNWR4cXRxSlp3UVBlUHNXalBscFNPbm9qYm9yNnBHcWRrNTQxbGZBN0FxRlFyNXBCMUJSZHEwanVZOWRiODFCd3lGdz09Il0sCgogICAgIkB0eXBlcy9lc3RyZWUiOiBbIkB0eXBlcy9lc3RyZWVAMS4wLjkiLCAiIiwge30sICJzaGE1MTItR2hkUGd5MWVsNC9JbVAwNVgwNVV3NGN3Mi9NOTNCQ1VtbkV2V1pOU3RsQ3pFS01FNEZraytZcG9BNU9pSE5RbW9TN0NhZmI4WGEzUHlhOG0xUXJ6ZWc9PSJdLAoKICAgICJAdHlwZXMvbm9kZSI6IFsiQHR5cGVzL25vZGVAMjIuMTkuMTkiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidW5kaWNpLXR5cGVzIjogIn42LjIxLjAiIH0gfSwgInNoYTUxMi1keWgveE8yRmg1YllyZldhYXFHclJRUUdrTmRtWXc2QW1hQVV2WWVVTU5UV1F0dmI3OTZpa0xkbVRjaFJtT2xPaUlKMVREWGZXZ1Z4MVFrVWxRNkhldz09Il0sCgogICAgIkB0eXBlcy9yZWFjdCI6IFsiQHR5cGVzL3JlYWN0QDE5LjIuMTUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiY3NzdHlwZSI6ICJeMy4yLjIiIH0gfSwgInNoYTUxMi1lUndjR05IdmUrRThxdEVRU1NSbDZ1cmgrckZvcDR2OGdtNk84ckd2MjVDb2RidkZkTGpBMXZWUTFLa2lGRTB3MFVQT25iOHREaUZLTDVscDBydFk1UT09Il0sCgogICAgIkB0eXBlcy9yZWFjdC1kb20iOiBbIkB0eXBlcy9yZWFjdC1kb21AMTkuMi4zIiwgIiIsIHsgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJAdHlwZXMvcmVhY3QiOiAiXjE5LjIuMCIgfSB9LCAic2hhNTEyLWpwMkwvZVk2Zm4rS2dWVlFBT3FZSXRiRjBWWS9ZQXBlNU16MkYwYXlrU084Z3gzMWJZQ1p5dlNlWXhDSEt2ekhHNWVaamMrenlhUzVCckJXeWEyK2tRPT0iXSwKCiAgICAiQHZpdGVzdC9leHBlY3QiOiBbIkB2aXRlc3QvZXhwZWN0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBzdGFuZGFyZC1zY2hlbWEvc3BlYyI6ICJeMS4xLjAiLCAiQHR5cGVzL2NoYWkiOiAiXjUuMi4yIiwgIkB2aXRlc3Qvc3B5IjogIjQuMS42IiwgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAiY2hhaSI6ICJeNi4yLjIiLCAidGlueXJhaW5ib3ciOiAiXjMuMS4wIiB9IH0sICJzaGE1MTItN0VIRHF1UHRoQUxTVjBqaGhqZ0VXOEZYYXZpTXg3clNxdThXNm9xQ29BdU9oS292ODE0UDk5UURWMXB4TUEzUVB2MjFZdWR2Sm5nSWhqck5JNG9wTGc9PSJdLAoKICAgICJAdml0ZXN0L21vY2tlciI6IFsiQHZpdGVzdC9tb2NrZXJANC4xLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHZpdGVzdC9zcHkiOiAiNC4xLjYiLCAiZXN0cmVlLXdhbGtlciI6ICJeMy4wLjMiLCAibWFnaWMtc3RyaW5nIjogIl4wLjMwLjIxIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIm1zdyI6ICJeMi40LjkiLCAidml0ZSI6ICJeNi4wLjAgfHwgXjcuMC4wIHx8IF44LjAuMCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIm1zdyIsICJ2aXRlIl0gfSwgInNoYTUxMi1NQ0ZjNjNjek1qRUluT2xjWTJjcFFDdkNOK0tnYkFuKzYweHU5Y01nUDRzS2FMQzVKTkFLdzdKSDhRZEFub0FDODhoVzFJaVNOWitHZ1ZYbE4xVWNNUT09Il0sCgogICAgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6IFsiQHZpdGVzdC9wcmV0dHktZm9ybWF0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRpbnlyYWluYm93IjogIl4zLjEuMCIgfSB9LCAic2hhNTEyLWg1U3hEL0l6TmhaWW5yU1pSc1VaUUlDK3ZEMEdZOGNVdnEwaXdzbWtGS2l4UkNLTExXcUNYYS9GSVE0UzFSK3NJK1BHb29qa0hzZE5yYlppTTlRcGd3PT0iXSwKCiAgICAiQHZpdGVzdC9ydW5uZXIiOiBbIkB2aXRlc3QvcnVubmVyQDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAicGF0aGUiOiAiXjIuMC4zIiB9IH0sICJzaGE1MTItbk9QQ21uMit5RDBaTm1LZHNYR3YvVXhNTVdiTXVLZUQ2R3lZbmNOd2RrWUR4cFF2clBTS1lqMnJXdURqQzJZNGI2dzZoamlwNWRCS0Z6RVV1WmUzdkE9PSJdLAoKICAgICJAdml0ZXN0L3NuYXBzaG90IjogWyJAdml0ZXN0L3NuYXBzaG90QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6ICI0LjEuNiIsICJAdml0ZXN0L3V0aWxzIjogIjQuMS42IiwgIm1hZ2ljLXN0cmluZyI6ICJeMC4zMC4yMSIsICJwYXRoZSI6ICJeMi4wLjMiIH0gfSwgInNoYTUxMi1ZaHNkRTZ4QVZmVERtemp4TDJaRFV2amorWnNneU9LZStUZFF6cWtENzJ3SU9tSGthOE51R1E2TnBUTlp2OUQyWjYzZmJ3V0tKUGVWcEV3NEVRZ1l4dz09Il0sCgogICAgIkB2aXRlc3Qvc3B5IjogWyJAdml0ZXN0L3NweUA0LjEuNiIsICIiLCB7fSwgInNoYTUxMi1KRkt4TXg2dWRod0toL0xkbzI3MGUxN1FYNzEwdmd1bk1rdVBBdlhqSFN2QzZvcUxXQUhoVmhqZy9JNzFxMHUwQ0JTRXJJT0RWMUtqdjBGUU5TV2pkZz09Il0sCgogICAgIkB2aXRlc3QvdXRpbHMiOiBbIkB2aXRlc3QvdXRpbHNANC4xLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHZpdGVzdC9wcmV0dHktZm9ybWF0IjogIjQuMS42IiwgImNvbnZlcnQtc291cmNlLW1hcCI6ICJeMi4wLjAiLCAidGlueXJhaW5ib3ciOiAiXjMuMS4wIiB9IH0sICJzaGE1MTItRnhJWStVODFSM0xHS0N4YUhIRlJRNStnNi9pUmdHTG1lSFdkcDJBbWo0bGpRUnJFSVdIbVp5RGZEWUJSWmxweXFBN3FLeHRTOUREMWRoazhSblJJVlE9PSJdLAoKICAgICJhY29ybiI6IFsiYWNvcm5AOC4xNi4wIiwgIiIsIHsgImJpbiI6IHsgImFjb3JuIjogImJpbi9hY29ybiIgfSB9LCAic2hhNTEyLVVWSnlFOU10dE9zQlFJREt3MXNrYjluQXdRdVI1d3VHRDMrODJLNkpnSmxtL1krS0k5Mm9Oc01OR1pDWWREc1Z0UkhTYWswcGNWNURubzUrNGpoOXN3PT0iXSwKCiAgICAiYW5zaS1yZWdleCI6IFsiYW5zaS1yZWdleEA1LjAuMSIsICIiLCB7fSwgInNoYTUxMi1xdUpRWGxUU1VHTDJMSDlTVVhvOFZ3c1k0c29hbmhnbzZMTlNtODRFMUxCY0U4czNPMHdwZGlSenlSOXovWlpKTWxNV3YzN3FPT2I5cGRKbE1VRUtGUT09Il0sCgogICAgImFuc2ktc3R5bGVzIjogWyJhbnNpLXN0eWxlc0A0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjb2xvci1jb252ZXJ0IjogIl4yLjAuMSIgfSB9LCAic2hhNTEyLXpiQjlyQ0pBVDFyYmppVkRiMmhxS0ZITllMeGd0azhOVVJ4WjNJWndEM0Y2TnR4YlhaUUNublNpMUxreCtJRG9oZFBsRnAyMjJ3VkFMSWhlWkpRU0VnPT0iXSwKCiAgICAiYXNzZXJ0aW9uLWVycm9yIjogWyJhc3NlcnRpb24tZXJyb3JAMi4wLjEiLCAiIiwge30sICJzaGE1MTItSXppOFJRY2ZmcUNlTlZnRmlnS2xpMXNza2xJYnBIbkNZYzZBa25YR1lvQjZnckpxeWVieTdqdjEySlVRZ21UQW5JRG5iY2sxdXhrc1Q0ZHpOM1BXQkE9PSJdLAoKICAgICJiYXNlbGluZS1icm93c2VyLW1hcHBpbmciOiBbImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZ0AyLjEwLjMxIiwgIiIsIHsgImJpbiI6IHsgImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZyI6ICJkaXN0L2NsaS5janMiIH0gfSwgInNoYTUxMi1NdWpZTzNlUDcydXZtU0UwaTR3bHRzb2RSZklwWkFUUDNqdnpSTlJHR3hneklkN2FWb2NWSkpWM25mMDFxbnp6S0ZHeFFWQzlicFd4bDVjanhUci83UT09Il0sCgogICAgImJ1ZmZlci1mcm9tIjogWyJidWZmZXItZnJvbUAxLjEuMiIsICIiLCB7fSwgInNoYTUxMi1FK1hRQ1J3U2JhYWlDaHR2Nms2RHdnYytieCtCczZ2dUtKSEhsNWtveC9CYUtiaGlYenFRT3dLNGNPMjJ5RWxHcDJPQ21qd1ZoVDNIbXhneVBHbkpmUT09Il0sCgogICAgImNhbml1c2UtbGl0ZSI6IFsiY2FuaXVzZS1saXRlQDEuMC4zMDAwMTc5MyIsICIiLCB7fSwgInNoYTUxMi1pd1NzWVdhQ09vaDI2Y1Y4TndOUlZpSGxyZlV2WXNIRGZSVmNidG13MEtnNlBKSVpaWHdNa2oxNDQyRllMQkdrZVVmMWp1QXNVM0RUZnhXNTc5bXJQQT09Il0sCgogICAgImNoYWkiOiBbImNoYWlANi4yLjIiLCAiIiwge30sICJzaGE1MTItTlVQUmx1T2ZPaVRLQkt2V1B0U0Q0UGhGdldDcU9pMEJHU3ROV3M1N1g5anM3WEdUcHJTbUZvejVGMHRXaFI0V1BqTmVSOWpYcWRDNy9VcFNKVG5sUmc9PSJdLAoKICAgICJjaGFsayI6IFsiY2hhbGtANC4xLjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiYW5zaS1zdHlsZXMiOiAiXjQuMS4wIiwgInN1cHBvcnRzLWNvbG9yIjogIl43LjEuMCIgfSB9LCAic2hhNTEyLW9LbmJoRnlSSVhwVXVlejhpQk1teUVhNG5iajRJT1F5dWhjL3d5OWtZNy9XVlBjd0lPOVZBNjY4UHU4UmtPNyswRzc2U0xST2V5dzlDcFEwNjFpNG1BPT0iXSwKCiAgICAiY2xpZW50LW9ubHkiOiBbImNsaWVudC1vbmx5QDAuMC4xIiwgIiIsIHt9LCAic2hhNTEyLUlWM091MGpTTXpacmQzcFo0OG5Ma1Q5REE3QWcxcG5QemFpUWhwVzdjM1JiY3FxenZ6elZ1K0w4Z2ZxTXAvOElNMk1RdFNpcWFDeHJyY2Z1OEk4ck1BPT0iXSwKCiAgICAiY2xpdWkiOiBbImNsaXVpQDguMC4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInN0cmluZy13aWR0aCI6ICJeNC4yLjAiLCAic3RyaXAtYW5zaSI6ICJeNi4wLjEiLCAid3JhcC1hbnNpIjogIl43LjAuMCIgfSB9LCAic2hhNTEyLUJTZU5ueXVzNzVDNC8vTlE5Z1F0MS9jc1RYeW8vOFNiK2FmTEFrekFwdEZ1TXNvZDlIRm9rR051ZFpwaS9vUVY3M2huVksrc1IrNVBWUk1kK0RyN1lRPT0iXSwKCiAgICAiY2xzeCI6IFsiY2xzeEAyLjEuMSIsICIiLCB7fSwgInNoYTUxMi1lWW0wUVdCdFVyQldaV0cwZDM4Nk9HQXcxNlo5OTVQaU9WbzJCN2JqV1NiSGVkR2w1ZTBaV2FxNjVrT0dnVVNOZXNFSURrQjlJU2JUZy9KSzlkaENaQT09Il0sCgogICAgImNvbG9yLWNvbnZlcnQiOiBbImNvbG9yLWNvbnZlcnRAMi4wLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiY29sb3ItbmFtZSI6ICJ+MS4xLjQiIH0gfSwgInNoYTUxMi1SUkVDUHNqN2l1L3hiNW9LWWNzRkhTcHBGTm5zai81Mk9WVFJLYjR6UDVvblh3VkYzelZtbVRvTmNPZkdDK0NSRHBmSy9VNTg0Zk1nMzhaSENhRWxLUT09Il0sCgogICAgImNvbG9yLW5hbWUiOiBbImNvbG9yLW5hbWVAMS4xLjQiLCAiIiwge30sICJzaGE1MTItZE95KzNBdVczYTJ3TmJaSEl1TVpwVGNnakd1TFUvdUJML3ViY1pGOU9YYkRvOGZmNE84eVZwNUJmMGVmUzh1RW9ZbzVxNEZ4N2RZOU9nUUdYZ0FzUUE9PSJdLAoKICAgICJjb21tYW5kZXIiOiBbImNvbW1hbmRlckAyLjIwLjMiLCAiIiwge30sICJzaGE1MTItR3BWa21NOHZGMnZRVWtqMkx2Wm1EMzVKeGVKT0xDd0o5Y1VrdWd5azJudWhidjMrbUp2cExZWXQrMCtVU014RStvaitleS9sSkVuaFp3NzV4L09NY1E9PSJdLAoKICAgICJjb25jdXJyZW50bHkiOiBbImNvbmN1cnJlbnRseUA5LjIuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjaGFsayI6ICI0LjEuMiIsICJyeGpzIjogIjcuOC4yIiwgInNoZWxsLXF1b3RlIjogIjEuOC4zIiwgInN1cHBvcnRzLWNvbG9yIjogIjguMS4xIiwgInRyZWUta2lsbCI6ICIxLjIuMiIsICJ5YXJncyI6ICIxNy43LjIiIH0sICJiaW4iOiB7ICJjb25jIjogImRpc3QvYmluL2NvbmN1cnJlbnRseS5qcyIsICJjb25jdXJyZW50bHkiOiAiZGlzdC9iaW4vY29uY3VycmVudGx5LmpzIiB9IH0sICJzaGE1MTItZnNmck8wTXhWNjRabm95OC9sMXZWSWpqSGEyOVNaeXlxUGdRQndoaURjYVc4d0pjMlczWFdWT0d4NE0zb0pCbnYvemRVWklJcDFnRGVTOThHelA4Tmc9PSJdLAoKICAgICJjb252ZXJ0LXNvdXJjZS1tYXAiOiBbImNvbnZlcnQtc291cmNlLW1hcEAyLjAuMCIsICIiLCB7fSwgInNoYTUxMi1LdnA0NTlIclYyRkVKMUNBc2kxS3UrTVkza2FzSDE5VEZ5a1R6MnhXbU1lcTZiazJOVTNYWHZmSitRNjFtMHhrdFd3dCsxSFNZZjNKWnNUbXMzYVJKZz09Il0sCgogICAgImNzc3R5cGUiOiBbImNzc3R5cGVAMy4yLjMiLCAiIiwge30sICJzaGE1MTItejFIR0tjWXkyeEE4QUdRZndybjBQQXkrUEI3WC9HU2ozVVZKVzlxS3luNDN4V2ErZ2w1blhtVTRxcUxNUnpXVkxGQzhLdXNVWDhULzBrQ2lPWXBBSVE9PSJdLAoKICAgICJkYXRlLWZucyI6IFsiZGF0ZS1mbnNANC4yLjEiLCAiIiwge30sICJzaGE1MTItMzdSaFNkeGFHMXN1ZW42VkRDemE2ck5yUWZvb3lRaDU3SEZWUHdRR0VxMlFXbGlWTHpQUVo4T2EwMTd3ZU91K0haQ256STdOM1BmL3d5b0JLZkVxckE9PSJdLAoKICAgICJkYXRlLWZucy1qYWxhbGkiOiBbImRhdGUtZm5zLWphbGFsaUA0LjEuMC0wIiwgIiIsIHt9LCAic2hhNTEyLWhUSVAveit0K3FLd0JEY21tc25taldUZHV4Q2crNUtmZHFXUXZiMlgvOEM5K2tuWVk2ZXBOL3BmeGREdXlWbFNWZUZ6MHNNNWVFZndJVVE3MFU0Y2tnPT0iXSwKCiAgICAiZGV0ZWN0LWxpYmMiOiBbImRldGVjdC1saWJjQDIuMS4yIiwgIiIsIHt9LCAic2hhNTEyLUJ0ajJCT09PODNvM1d5SDU5ZThNZ1hzeEVRVmNhcmtVT3BFWXJ1YkIwdXJ3bk4xMHlRMzY0cnNpQnlVMTFuWmxxV1labTA1aS9vZjdpbzRtemloQnRRPT0iXSwKCiAgICAiZW1vamktcmVnZXgiOiBbImVtb2ppLXJlZ2V4QDguMC4wIiwgIiIsIHt9LCAic2hhNTEyLU1Tall6Y1dOT0EwZXdBSHB6ME14cFlGdndnNnlqeTFORzN4dGVvcXo2NDRWQ28vUlBnbnIxL0dHdCtpYzNpSlR6UThFdTNUZE0xNFNhd25WVW1HRTZBPT0iXSwKCiAgICAiZW5oYW5jZWQtcmVzb2x2ZSI6IFsiZW5oYW5jZWQtcmVzb2x2ZUA1LjIxLjUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZ3JhY2VmdWwtZnMiOiAiXjQuMi40IiwgInRhcGFibGUiOiAiXjIuMy4zIiB9IH0sICJzaGE1MTItbUxDTmJyUWxpMTFLMXlTVW11TnQ0WlVCM09wR0lEcTRxMnZUQlRmNWNMMmxwc1JqSTlRS3FTRDBuZGpXOEZ5dmNXL0pqNDZnTWU5c3l5SEFzdk1hL0E9PSJdLAoKICAgICJlcy1tb2R1bGUtbGV4ZXIiOiBbImVzLW1vZHVsZS1sZXhlckAyLjEuMCIsICIiLCB7fSwgInNoYTUxMi1uMjd6VFlNall1MWFqNE1qQ1d6U1A3RzlyNzV1dHNhb2M4bTYxd2VLK1c4Sk1CR0dReWJkNDNHc3RDWFozV05tU0Z0R1Q5d2k1OXFRVFc2bWhUUjVMUT09Il0sCgogICAgImVzYnVpbGQiOiBbImVzYnVpbGRAMC4yNS40IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGVzYnVpbGQvYWl4LXBwYzY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9hbmRyb2lkLWFybSI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvYW5kcm9pZC1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvYW5kcm9pZC14NjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2Rhcndpbi1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZGFyd2luLXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZnJlZWJzZC1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZnJlZWJzZC14NjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWFybSI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtYXJtNjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWlhMzIiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWxvb25nNjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LW1pcHM2NGVsIjogIjAuMjUuNCIsICJAZXNidWlsZC9saW51eC1wcGM2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtcmlzY3Y2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtczM5MHgiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbmV0YnNkLWFybTY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9uZXRic2QteDY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9vcGVuYnNkLWFybTY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9vcGVuYnNkLXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvc3Vub3MteDY0IjogIjAuMjUuNCIsICJAZXNidWlsZC93aW4zMi1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvd2luMzItaWEzMiI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvd2luMzIteDY0IjogIjAuMjUuNCIgfSwgImJpbiI6IHsgImVzYnVpbGQiOiAiYmluL2VzYnVpbGQiIH0gfSwgInNoYTUxMi04cGdqTFVjVWpjZ0RnKzJRNE5ZWG5QYm8vdm5jQVk0VW15YUNtMGpaZXZFUnFDSFpJYVd3ZEpIa2Y4WFF0dTRBeFNLQ2R2clViVDBYVXIxSWRaekk4UT09Il0sCgogICAgImVzY2FsYWRlIjogWyJlc2NhbGFkZUAzLjIuMCIsICIiLCB7fSwgInNoYTUxMi1XVWoycWx4YVF0TzRnNlBxNWMyOUdUY1dHRHlkOGl0TDh6VGxpcGdFQ3ozSmVzQWlpT0tvdGQ4SlU2b3RCM1BBQ2dHNnhrSlV5Vmhib01TK2JqZS9qQT09Il0sCgogICAgImVzdHJlZS13YWxrZXIiOiBbImVzdHJlZS13YWxrZXJAMy4wLjMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL2VzdHJlZSI6ICJeMS4wLjAiIH0gfSwgInNoYTUxMi03UlVLZlhnU01Na3p0Nlp1WG1xYXBPdXJMR1BQZmdqNmw5dVJaN2xSR29sdmsweTJ5b2NjMzVMZGN4S0M1UFFaZG4yRE1xaW9BUTJOb1djclRLbW02Zz09Il0sCgogICAgImV4cGVjdC10eXBlIjogWyJleHBlY3QtdHlwZUAxLjMuMCIsICIiLCB7fSwgInNoYTUxMi1rbnZ5ZWF1WWhxak9ZdlE2Nk16blNNczgzd21IckN5Y05FTjZBbysyQWVZRWZ4VUlrdWlWeGRFYTFxbEdFUEsrV2UzbjBUSGlEY2lZU3NDY2dXL0RvQT09Il0sCgogICAgImZkaXIiOiBbImZkaXJANi41LjAiLCAiIiwgeyAicGVlckRlcGVuZGVuY2llcyI6IHsgInBpY29tYXRjaCI6ICJeMyB8fCBeNCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbInBpY29tYXRjaCJdIH0sICJzaGE1MTItdEliWXRaYnVjT3MwQlJHcVBKa3NoSlVZZEwrU0RIN2RWTThnankrRVJwM1dBVWpMRUZKRSswMmthbnlIdHdqV09ud3JLWUJpd0FtTTBwNGtMSkFuWGc9PSJdLAoKICAgICJmc2V2ZW50cyI6IFsiZnNldmVudHNAMi4zLjIiLCAiIiwgeyAib3MiOiAiZGFyd2luIiB9LCAic2hhNTEyLXhpcU1RUjR4QWVIVHVCOXVXbStmRlJjSU9nS0JNaU9CUCtlWGl5VDdqc2dWQ3ExYmtWeWd0MDBvQVNvd0I3RWR0cE9IYWFQZ0t0ODEyUDlhYitEREtBPT0iXSwKCiAgICAiZ2V0LWNhbGxlci1maWxlIjogWyJnZXQtY2FsbGVyLWZpbGVAMi4wLjUiLCAiIiwge30sICJzaGE1MTItRHlGUDNCTS8zWUhUUU9DVUwvdzBPWkhSMGxwS2VHcnhvdGNIV2NxTkVkbmx0cUZ3WFZmaEVCUTk0ZUlvMzRBZlFwbzByR2tpNGN5SWlmdFkwNmgyRmc9PSJdLAoKICAgICJncmFjZWZ1bC1mcyI6IFsiZ3JhY2VmdWwtZnNANC4yLjExIiwgIiIsIHt9LCAic2hhNTEyLVJiSjUvam1GY05OQ2NEVjVvOWVUbkJMSi9Ic3pXVjBQNzNiYytGZjRuUy9ySmorWWFTNklHeWlPTDBWb0JZWCtsMVdybDNrNjNoL0tySCtuaEowWHZRPT0iXSwKCiAgICAiaGFzLWZsYWciOiBbImhhcy1mbGFnQDQuMC4wIiwgIiIsIHt9LCAic2hhNTEyLUV5a0pUL1ExS2pUV2N0cHBnSUFnZlNPMHRLVnVaVWpoZ01yMTdrcVR1bU1sNkFmdjNFSVNsZVU3cVpVem9YREZUQUhUREM0Tk9vRy9aeFUzRXZsTVBRPT0iXSwKCiAgICAiaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQiOiBbImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50QDMuMC4wIiwgIiIsIHt9LCAic2hhNTEyLXp5bW01K3Urc0NzU1d5RDlxTmFlalYzREZ2aENLY2xLZGl6WWFKVXVIQTgzUkxqYjduU3VHbmRkQ0hHdjBoaytLWTdCTUFsc1dlSzRVZWc2RVY2WFFnPT0iXSwKCiAgICAiaml0aSI6IFsiaml0aUAyLjcuMCIsICIiLCB7ICJiaW4iOiB7ICJqaXRpIjogImxpYi9qaXRpLWNsaS5tanMiIH0gfSwgInNoYTUxMi1BQy83Sm9mSnZaR3JybmVXTmFFbkplT0xVeCtKbEd0N3ROYTB3WmlSUFQ0TVkxd21mS2p0Mis2TzJwMnV6Mitza2xsOE9aWm1KTU5xZWtlN2tLYk5nUT09Il0sCgogICAgImxpYnBob25lbnVtYmVyLWpzIjogWyJsaWJwaG9uZW51bWJlci1qc0AxLjEyLjQxIiwgIiIsIHt9LCAic2hhNTEyLWxzbU1tR1hCeFhJSy9WTUxFajBrTDZNdFVzMWtCR2oxblRDemk2emdRb0cxREV3cXd0MkRReUh4Y0x5a2NlSXhBbmZFM2h5YTdOdUloNlBwQzZTM2ZBPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzIjogWyJsaWdodG5pbmdjc3NAMS4zMi4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImRldGVjdC1saWJjIjogIl4yLjAuMyIgfSwgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAibGlnaHRuaW5nY3NzLWFuZHJvaWQtYXJtNjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1kYXJ3aW4tYXJtNjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1kYXJ3aW4teDY0IjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtZnJlZWJzZC14NjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1saW51eC1hcm0tZ251ZWFiaWhmIjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251IjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtbXVzbCI6ICIxLjMyLjAiLCAibGlnaHRuaW5nY3NzLWxpbnV4LXg2NC1nbnUiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtbXVzbCI6ICIxLjMyLjAiLCAibGlnaHRuaW5nY3NzLXdpbjMyLWFybTY0LW1zdmMiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy13aW4zMi14NjQtbXN2YyI6ICIxLjMyLjAiIH0gfSwgInNoYTUxMi1OWFlCemluTnJibGZyYVBHeXJiUG9EMTlDMWg5bGZJLzFtemdXWXZYVVRlNDE0R3ovWDFGRDJYQlpTWk03clJUck1BOEpMM090QWFHaWZySUtoUTV5UT09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1hbmRyb2lkLWFybTY0IjogWyJsaWdodG5pbmdjc3MtYW5kcm9pZC1hcm02NEAxLjMyLjAiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItWUs3L0NsVHQ0a0FLMHZvNnczWCtQbm0wRDJjZjJ2UEhiaE9YZG9OdGkxR2EwYWwxUDRUQlpod2pBVHZqTndMRUJDbkt2akpjMmpRZ0hYSDBORXdsQWc9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtZGFyd2luLWFybTY0IjogWyJsaWdodG5pbmdjc3MtZGFyd2luLWFybTY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVJ6ZUc5SnU1YmFnMkJ2MS9sd2xWSnZCRTNxNlR0WHNrZFpMTEN5Zmc1cHQrSEx6OUJxbElDTzdMWk03VkhOVFRuLzVQUmhIRkJTams1bGM0Y21zY1BRPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzLWRhcndpbi14NjQiOiBbImxpZ2h0bmluZ2Nzcy1kYXJ3aW4teDY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1VK1FzQnAybS9zMndxcFVZVC82d25sYWdkWmJ0WmRuZFNtdXQvTkpxbENjTUxUV3A1bXVDcklEK0s1VUo2anFEMkJGc2hlakNZWG5pUERiTmg3M1Y4dz09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1mcmVlYnNkLXg2NCI6IFsibGlnaHRuaW5nY3NzLWZyZWVic2QteDY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSkNUaWdlZEVrc1prM3RIVFR0aG5NZFZmR2Y2MUZreThKaTJFNFlqVVRFUVgxNHhpeS9sVHpYbnUxdndpWmUzYlllMHErU3BzU0gvQ1RlRFhLNldIaWc9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtLWdudWVhYmloZiI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LWFybS1nbnVlYWJpaGZAMS4zMi4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTIteDZybm5wUmEyR0wwelFPa3Q2cnRzM1lEUHpkdUxwV3Z3QUY2RU1oWEZWWlhENHRQckJrRUZxekdvd3pDc0lXc1BqcVNLK3R5TkVPRFVCWGVlVkhTa3c9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251IjogWyJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItMG5uTXlveU9MUkpYZmJNT2lsYVNSY0xIM0p3NXo5SEROR2ZUL2d3Q1BnYURqbngwaTh3N3ZCekZMRlIxZjZDTUxLRjhnVmJlYm1rVU4zZmEva1FKcFE9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtbXVzbCI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LWFybTY0LW11c2xAMS4zMi4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1VcFFrb2VucjRVSkV6Z1ZJWXBJODBsREZ2Um1QVmc2b3Fib05IZm9INENRSWZOQStIT3JaN01vN0taUDAyZEM2TGpnaFBRSmVCc3ZYaEpvZC93bklCZz09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtZ251IjogWyJsaWdodG5pbmdjc3MtbGludXgteDY0LWdudUAxLjMyLjAiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1WN1FyNTJJaFptZEtQVnIrVnR3OG8rV0xzUUpZQ1RkOGxvSWZwRGFNUldHVVpmQk9ZRUpleUpJa3FHSURNWlB3UHgyNHBVTWZ3U3h4SThwaHIvTWJPQT09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtbXVzbCI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LXg2NC1tdXNsQDEuMzIuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLWJZY0xwK1ZiMGF3c2lYZy84MHVDUmV6Q1lITmcxL2wzbXQwZ3pIbldWOVhQMVc1c0thNS9UQ2RHV2FSL3pCTTJQZUYvSGJzUXYvajJVUk5PaVZ1eFdnPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzLXdpbjMyLWFybTY0LW1zdmMiOiBbImxpZ2h0bmluZ2Nzcy13aW4zMi1hcm02NC1tc3ZjQDEuMzIuMCIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItOFNiQzhCUjQwcFM2YmFDTThzYnRZRFN3RVZRZDRKbEZUT2xhRDNnV0dIZlRoVGNBQm5OREJkYTZlVFplcWJvZmFsSUpoRngwcUt6Z0hKbWNQVG5HZHc9PSJdLAoKICAgICJsaWdodG5pbmdjc3Mtd2luMzIteDY0LW1zdmMiOiBbImxpZ2h0bmluZ2Nzcy13aW4zMi14NjQtbXN2Y0AxLjMyLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1BbXE5Qi9Tb1pZZERpMWtGcm9qbm9xUEx4WWhRNFdvNVhpTDhFVkpyVnNCOEFSb0MxUFdXNlZHdFQwV0tDZW1qeThhQytsb3VKbmpTN1UxOHgzYjA2UT09Il0sCgogICAgIm1hZ2ljLXN0cmluZyI6IFsibWFnaWMtc3RyaW5nQDAuMzAuMjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjIjogIl4xLjUuNSIgfSB9LCAic2hhNTEyLXZkMkY0WVV5RVhLR2NMSG9xK1RFeUNqeHVlU2VIbkZ4eXlqTnA4MHlnMFhWNHZVaG5EZXIvbHZ2bHFNL2FyQjViWFFONUsyLzNvaW55Q1J5eDhUMkNRPT0iXSwKCiAgICAibmFub2lkIjogWyJuYW5vaWRAMy4zLjEyIiwgIiIsIHsgImJpbiI6IHsgIm5hbm9pZCI6ICJiaW4vbmFub2lkLmNqcyIgfSB9LCAic2hhNTEyLVpCOVJILzM5cXBxNVZ1NlkrTm1VYUZoUVI2cHArTTJYdDc2WEJuRXdEYUdjVkFxaGx2eHJsM0IyYktTNUQzTkgzUVI3NnYzYVNyS2FGL0tpeTdsRXRRPT0iXSwKCiAgICAibmV4dCI6IFsibmV4dEAxNi4yLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQG5leHQvZW52IjogIjE2LjIuNiIsICJAc3djL2hlbHBlcnMiOiAiMC41LjE1IiwgImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZyI6ICJeMi45LjE5IiwgImNhbml1c2UtbGl0ZSI6ICJeMS4wLjMwMDAxNTc5IiwgInBvc3Rjc3MiOiAiOC40LjMxIiwgInN0eWxlZC1qc3giOiAiNS4xLjYiIH0sICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBuZXh0L3N3Yy1kYXJ3aW4tYXJtNjQiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy1kYXJ3aW4teDY0IjogIjE2LjIuNiIsICJAbmV4dC9zd2MtbGludXgtYXJtNjQtZ251IjogIjE2LjIuNiIsICJAbmV4dC9zd2MtbGludXgtYXJtNjQtbXVzbCI6ICIxNi4yLjYiLCAiQG5leHQvc3djLWxpbnV4LXg2NC1nbnUiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy1saW51eC14NjQtbXVzbCI6ICIxNi4yLjYiLCAiQG5leHQvc3djLXdpbjMyLWFybTY0LW1zdmMiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy13aW4zMi14NjQtbXN2YyI6ICIxNi4yLjYiLCAic2hhcnAiOiAiXjAuMzQuNSIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJAb3BlbnRlbGVtZXRyeS9hcGkiOiAiXjEuMS4wIiwgIkBwbGF5d3JpZ2h0L3Rlc3QiOiAiXjEuNTEuMSIsICJiYWJlbC1wbHVnaW4tcmVhY3QtY29tcGlsZXIiOiAiKiIsICJyZWFjdCI6ICJeMTguMi4wIHx8IDE5LjAuMC1yYy1kZTY4ZDJmNC0yMDI0MTIwNCB8fCBeMTkuMC4wIiwgInJlYWN0LWRvbSI6ICJeMTguMi4wIHx8IDE5LjAuMC1yYy1kZTY4ZDJmNC0yMDI0MTIwNCB8fCBeMTkuMC4wIiwgInNhc3MiOiAiXjEuMy4wIiB9LCAib3B0aW9uYWxQZWVycyI6IFsiQG9wZW50ZWxlbWV0cnkvYXBpIiwgIkBwbGF5d3JpZ2h0L3Rlc3QiLCAiYmFiZWwtcGx1Z2luLXJlYWN0LWNvbXBpbGVyIiwgInNhc3MiXSwgImJpbiI6IHsgIm5leHQiOiAiZGlzdC9iaW4vbmV4dCIgfSB9LCAic2hhNTEyLXFPVmdLSmcxK0F0MTVOcGVVUCtlSmdDSHZUQ2dYc29nd2VxODdSaS9JeDdQa3FRSGc0c2RhWG1TRnFLbGdhSVhFNGtXMGcyNUxFNjhXODdVQU5sSHR3PT0iXSwKCiAgICAib2J1ZyI6IFsib2J1Z0AyLjEuMSIsICIiLCB7fSwgInNoYTUxMi11VHFGOU11UHJhQVErSXNuUGYzNjZSRzRjUDlSdFVpN01MTzFOM0tFYyt3YjBhNnlLcGVMMGxtazJJQjFqWTVLSFBBbFRjNlQvSlJkQy9ZcXhITndrUT09Il0sCgogICAgInBhdGhlIjogWyJwYXRoZUAyLjAuMyIsICIiLCB7fSwgInNoYTUxMi1XVWpHY0FxUDFnUWFjb1FlK09CSnNGQTdMZDREeVh1VUlqWjVjYzc1Y0xIdko3ZHROc1R1Z3BoeElBRHdzcFMrQXJhQVVlUENLclNWdFBMRmovRjg4dz09Il0sCgogICAgInBpY29jb2xvcnMiOiBbInBpY29jb2xvcnNAMS4xLjEiLCAiIiwge30sICJzaGE1MTIteGNlSDJzbmh0YjVNOWxpcURzbUV3NTZsZTM3Nm1UWmtFWC9qRWIvUnhORnllZ051bDdlTnNsQ1hQOUZEai9MY3UwWDhLRXlNY2VQMm50cGFIckRFVkE9PSJdLAoKICAgICJwaWNvbWF0Y2giOiBbInBpY29tYXRjaEA0LjAuNCIsICIiLCB7fSwgInNoYTUxMi1RUDg4QkFLdk1hbS8zTnhINnZqMm8yMVI2TWp4WlVBZDZubHdBUy9wbkd2TjlJVkxvY0xIeEdZSXpGaGc2ZlVRKzV0aDZQNGR2NGVXOWpYM0RTSWo3QT09Il0sCgogICAgInBsYXl3cmlnaHQiOiBbInBsYXl3cmlnaHRAMS42MC4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInBsYXl3cmlnaHQtY29yZSI6ICIxLjYwLjAiIH0sICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgImZzZXZlbnRzIjogIjIuMy4yIiB9LCAiYmluIjogeyAicGxheXdyaWdodCI6ICJjbGkuanMiIH0gfSwgInNoYTUxMi1oaGVIZG9rTThjZHFDYjBsY0Uzcyt6VDR0NFcrdnZqcEd4c1psRG5pa2Fyeng4dFN6TWViaDNVaUZ0Z3F3RnduVG5qWVFjc3lNRjhlaTJtQ08vdHBlQT09Il0sCgogICAgInBsYXl3cmlnaHQtY29yZSI6IFsicGxheXdyaWdodC1jb3JlQDEuNjAuMCIsICIiLCB7ICJiaW4iOiB7ICJwbGF5d3JpZ2h0LWNvcmUiOiAiY2xpLmpzIiB9IH0sICJzaGE1MTItOWJXNnp2WC9tMGxFYmdUS0o2WXBwT0t4OEgzVk9QQk1PQ0ZoMmlyWEZPVDRCYkhncng1aFBqd0pZTFQ0MEx1KzRxdEQzNnFLYy9IbjU2U3RVVzU3SUE9PSJdLAoKICAgICJwb3N0Y3NzIjogWyJwb3N0Y3NzQDguNS4xNSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJuYW5vaWQiOiAiXjMuMy4xMiIsICJwaWNvY29sb3JzIjogIl4xLjEuMSIsICJzb3VyY2UtbWFwLWpzIjogIl4xLjIuMSIgfSB9LCAic2hhNTEyLUZmUjhzamQ0ZW0yVDZmYjNJMk13QUpVN0hXVk1yOXpiYStlbm1RZWVXRmZDYm0rVU9DLzBYNERTOFh0cFVUTXdXTUdiaktZUDd4amZOZWt6eUdtQjNBPT0iXSwKCiAgICAicmVhY3QiOiBbInJlYWN0QDE5LjIuNiIsICIiLCB7fSwgInNoYTUxMi1zZldHR2ZhdmkweHI4UGcwc1ZzeUhNQU96aVZZS2dQTE5yUzdpZytpdk1OYjN3YkNCdzNLeHRmbHNHQkF3RDNnWVFsRS9BRVpzVExnVG9SclNDamIwUT09Il0sCgogICAgInJlYWN0LWRheS1waWNrZXIiOiBbInJlYWN0LWRheS1waWNrZXJAOS4xNC4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBkYXRlLWZucy90eiI6ICJeMS40LjEiLCAiQHRhYmJ5X2FpL2hpanJpLWNvbnZlcnRlciI6ICIxLjAuNSIsICJkYXRlLWZucyI6ICJeNC4xLjAiLCAiZGF0ZS1mbnMtamFsYWxpIjogIjQuMS4wLTAiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAicmVhY3QiOiAiPj0xNi44LjAiIH0gfSwgInNoYTUxMi10QmFvRFdqUHdlME01cEdydW00SDBTUjZMeWsrQk85b0hucDlKYktwR0tXMm1scmFOUGdQOUJNZnNnNXBXcHdyc3NBUm1lcWs3WUJsMm9YdXRaVGFIQT09Il0sCgogICAgInJlYWN0LWRvbSI6IFsicmVhY3QtZG9tQDE5LjIuNiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJzY2hlZHVsZXIiOiAiXjAuMjcuMCIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJyZWFjdCI6ICJeMTkuMi42IiB9IH0sICJzaGE1MTItMHByTUkraHZCYlBqc1dueERMeGxDR3lNOFBONlV1V2pFVUNZbVpoTzY3eElWOVhhc2Evci92RG5xK1h5cTRMbzI3ZzhRU2JPNVl6QVJ1MEQxU3BzM2c9PSJdLAoKICAgICJyZXF1aXJlLWRpcmVjdG9yeSI6IFsicmVxdWlyZS1kaXJlY3RvcnlAMi4xLjEiLCAiIiwge30sICJzaGE1MTItZkd4RUk3K3dzRzl4cnZkanNybG1MMjJPTVRUaUhSd0FNcm9pRWVNZ3E4Z3pvTEMvUFFyN1JzUkRTVExVZy9iWkFadEYrVFZJa0hjNi80UklLcnVpK1E9PSJdLAoKICAgICJyZXNlbGVjdCI6IFsicmVzZWxlY3RANS4yLjAiLCAiIiwge30sICJzaGE1MTItQWdaM1VPWm0zWW5kZnJKNE9ZamdyVDdibUNtLzFpcWtqdkVmSC9vWWp6aDZQRDJxdzRRdVQzampuWElycGR0NE1UcE1YY2xNVDNsWGJtUlkrWFJha3c9PSJdLAoKICAgICJyb2xsZG93biI6IFsicm9sbGRvd25AMS4wLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQG94Yy1wcm9qZWN0L3R5cGVzIjogIj0wLjEzMC4wIiwgIkByb2xsZG93bi9wbHVnaW51dGlscyI6ICJeMS4wLjAiIH0sICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkByb2xsZG93bi9iaW5kaW5nLWFuZHJvaWQtYXJtNjQiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLWFybTY0IjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLWRhcndpbi14NjQiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctZnJlZWJzZC14NjQiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctbGludXgtYXJtLWdudWVhYmloZiI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1nbnUiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctbGludXgtYXJtNjQtbXVzbCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1wcGM2NC1nbnUiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctbGludXgtczM5MHgtZ251IjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1nbnUiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctbGludXgteDY0LW11c2wiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctb3Blbmhhcm1vbnktYXJtNjQiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctd2FzbTMyLXdhc2kiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctd2luMzItYXJtNjQtbXN2YyI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy13aW4zMi14NjQtbXN2YyI6ICIxLjAuMSIgfSwgImJpbiI6IHsgInJvbGxkb3duIjogImJpbi9jbGkubWpzIiB9IH0sICJzaGE1MTItWDBLUUhsak5uRWtXTnFxaXo5ekpyR3VuaDFCMEhnT3hMWHZuRnBDT2NhZHpjeTVxb2haM3RxTUVVZzAwdm5jb1Jvdlh1SzNacUNUOUtubkt6b0luRlE9PSJdLAoKICAgICJyeGpzIjogWyJyeGpzQDcuOC4yIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRzbGliIjogIl4yLjEuMCIgfSB9LCAic2hhNTEyLWRoS2Y5MDNVL1BRWlk2Ym9OTnRBR2RXYkc4NVdBYmpULzF4WW9aSUM3RkFZMHlXYXBPQlFWc1ZyRGw1OFc4Ni8vZTFWcE1OQnRSVjRNYVhmZE15U0ZBPT0iXSwKCiAgICAic2NoZWR1bGVyIjogWyJzY2hlZHVsZXJAMC4yNy4wIiwgIiIsIHt9LCAic2hhNTEyLWVOditXclZiS3UxZjN2YllKVC94dGlGNXN5QTVIUElNdGY5SWdZL25LZzBzV3F6QVVFdnFZL3htN09jWmMvcWFmTHgvaU85RmdPbWVTQXA0djV0aS9RPT0iXSwKCiAgICAic2VtdmVyIjogWyJzZW12ZXJANy44LjAiLCAiIiwgeyAiYmluIjogeyAic2VtdmVyIjogImJpbi9zZW12ZXIuanMiIH0gfSwgInNoYTUxMi1BY003ZFYvNXVsNEVla29RMjlBZ201dnJpOEpOcVJ5ajM5bzBxcFg2dkRGMkdacnR1dFpsNVJ3Z0QxWG5aamlUQWZuY3NKaE1JNDhRUUgzc044N1lOQT09Il0sCgogICAgInNoYXJwIjogWyJzaGFycEAwLjM0LjUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGltZy9jb2xvdXIiOiAiXjEuMC4wIiwgImRldGVjdC1saWJjIjogIl4yLjEuMiIsICJzZW12ZXIiOiAiXjcuNy4zIiB9LCAib3B0aW9uYWxEZXBlbmRlbmNpZXMiOiB7ICJAaW1nL3NoYXJwLWRhcndpbi1hcm02NCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC1kYXJ3aW4teDY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLWxpYnZpcHMtZGFyd2luLWFybTY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4teDY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm0iOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybTY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1wcGM2NCI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgtcmlzY3Y2NCI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgtczM5MHgiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXg2NCI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXhtdXNsLWFybTY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wteDY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGludXgtYXJtIjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLWxpbnV4LWFybTY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLWxpbnV4LXBwYzY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLWxpbnV4LXJpc2N2NjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgtczM5MHgiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgteDY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLWxpbnV4bXVzbC1hcm02NCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC1saW51eG11c2wteDY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLXdhc20zMiI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC13aW4zMi1hcm02NCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC13aW4zMi1pYTMyIjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLXdpbjMyLXg2NCI6ICIwLjM0LjUiIH0gfSwgInNoYTUxMi1PdTlJNUZ0OVdOY0NiWHJVOWNNZ1BCY0NLOExpd0xxY2J5d1czdDRvRFYzN24xcHpwdU5Mc1lpQVY4ZU9EbmpidFFsU0R3WjJjVUVlUXo0RTU0SGx0Zz09Il0sCgogICAgInNoZWxsLXF1b3RlIjogWyJzaGVsbC1xdW90ZUAxLjguMyIsICIiLCB7fSwgInNoYTUxMi1PYm1uSUY0aFhOZzFCcWhuSG1nYkRFVEY4ZExQQ2dnWldCamtRZmhacGJzelpuWXVyNURVbGpUY0NIaWk1TEMzSjVFMHllTy8xTElNeUgrVXZIUWd5dz09Il0sCgogICAgInNpZ2luZm8iOiBbInNpZ2luZm9AMi4wLjAiLCAiIiwge30sICJzaGE1MTIteWJ4MFdPMS84YlNCTEVXWFp2RWQ3Z01XM1NuM0pGbFczVHZYMW5SRWJETFJOUU5hZU5OOFdLMG1lQndQZEFhT0k3VHRSUlJKbi9FczF6aHJyQ0h1N2c9PSJdLAoKICAgICJzb3VyY2UtbWFwIjogWyJzb3VyY2UtbWFwQDAuNi4xIiwgIiIsIHt9LCAic2hhNTEyLVVqZ2FwdW1XbGJNaGtCZ3pUN1lrYzVZWFVUNDZGMGlLdThTR1hxMGJjd1A1ZHovaDBQbGo2ZW5KcWp6MVpicTJsNVdhcVluclZid1dPV015RjNGNDdnPT0iXSwKCiAgICAic291cmNlLW1hcC1qcyI6IFsic291cmNlLW1hcC1qc0AxLjIuMSIsICIiLCB7fSwgInNoYTUxMi1VWFdNS2hMT3dWS2I3MjhJVXRRUFh4ZllVK3VzZHlidFVySy84dUdFOENRTXZyaE9wd3Z6REJ3ajBRaFNMN01RYzd2SXNJU0JHOFZROCtJRFF4cGZRQT09Il0sCgogICAgInNvdXJjZS1tYXAtc3VwcG9ydCI6IFsic291cmNlLW1hcC1zdXBwb3J0QDAuNS4yMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJidWZmZXItZnJvbSI6ICJeMS4wLjAiLCAic291cmNlLW1hcCI6ICJeMC42LjAiIH0gfSwgInNoYTUxMi11QkhVM0wzY3pzSXlZWEtYODhmZHJHb3Z4ZFNDb1RHRFJaNlNZWHRTUnhMWlV6SGc1UC82Nkh0NnVvVWxIdTlFWm9kK2luWGhLbzNxUWd3WFVUL3kxdz09Il0sCgogICAgInN0YWNrYmFjayI6IFsic3RhY2tiYWNrQDAuMC4yIiwgIiIsIHt9LCAic2hhNTEyLTFYTUpFNWZRbzFqR0g2WS83ZWJud1BPQkVrSUVuVDRRRjMyZDVSMStWWGRYdmVNMElCTUp0OHpmYXhYMVAzUWhWd3JZZSs1NzYramtBTnRTUzJtQmJ3PT0iXSwKCiAgICAic3RkLWVudiI6IFsic3RkLWVudkA0LjEuMCIsICIiLCB7fSwgInNoYTUxMi1ScTd5YmNYMlJ1QzU1cjlvYVBWRVc3L3h1M3RqOHU0R2VCWUhCV0N5Y2hGdHpNSXI4NkE3ZTNQUEVCUFQzN3NIU3RLWDMrVGlYL0ZyL0FDbUpMVmxMUT09Il0sCgogICAgInN0cmluZy13aWR0aCI6IFsic3RyaW5nLXdpZHRoQDQuMi4zIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImVtb2ppLXJlZ2V4IjogIl44LjAuMCIsICJpcy1mdWxsd2lkdGgtY29kZS1wb2ludCI6ICJeMy4wLjAiLCAic3RyaXAtYW5zaSI6ICJeNi4wLjEiIH0gfSwgInNoYTUxMi13S3lRUlFwakowc0lwNjJFclNaZEdzak1KV3NhcDVvUk5paEhodTZHN0pWTy85aklCNlV5ZXZMK3RYdU9xcm5nOGovY3hLVFd5V1V3dlNUcmlpWnovZz09Il0sCgogICAgInN0cmlwLWFuc2kiOiBbInN0cmlwLWFuc2lANi4wLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiYW5zaS1yZWdleCI6ICJeNS4wLjEiIH0gfSwgInNoYTUxMi1ZMzhWUFNIY3FrRnJDcEZuUTl2dVNYbXF1dXY1b1hPS3BHZVQ2YUdycjNvM0djOUFsVmE2SkJmVVNPQ25ieEdHWkYrLzBvb0k3S3JQdVVTenRVZFU1QT09Il0sCgogICAgInN0eWxlZC1qc3giOiBbInN0eWxlZC1qc3hANS4xLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiY2xpZW50LW9ubHkiOiAiMC4wLjEiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAicmVhY3QiOiAiPj0gMTYuOC4wIHx8IDE3LngueCB8fCBeMTguMC4wLTAgfHwgXjE5LjAuMC0wIiB9IH0sICJzaGE1MTItcVNWeURUZU1vdGR2UVlvSFdMTkd3UkZKSEMraStadmRCUllvc09GZ0MrV2cxdng0ZnJOMi9SRy9OQTdTWXFxdktOTGYzOVAyTFNSQTJwdTZuMFhZWkE9PSJdLAoKICAgICJzdXBwb3J0cy1jb2xvciI6IFsic3VwcG9ydHMtY29sb3JAOC4xLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiaGFzLWZsYWciOiAiXjQuMC4wIiB9IH0sICJzaGE1MTItTXBVRU4yT29kdFV6eHZLUWw3MmNVRjdSUTVFaUhzR3ZTc1ZHMGlhOWM1UmJXR0wyQ0k0QzdFcFBTOFVUQklwbG5selppTnVWNTZ3K0Z1Tnh5M3R5MlE9PSJdLAoKICAgICJ0YWlsd2luZC1tZXJnZSI6IFsidGFpbHdpbmQtbWVyZ2VAMy42LjAiLCAiIiwge30sICJzaGE1MTItdXhMN3FBVlFyaXFSUVBBeUszcGo2NlZxc2tXcW9aMzdQVzk0andPVHdOZnEvejlveXUxVitlcXJacXRSMitmQ2lYZFlPWmUvTW9kdDhHdHZxTnp1K3c9PSJdLAoKICAgICJ0YWlsd2luZGNzcyI6IFsidGFpbHdpbmRjc3NANC4zLjAiLCAiIiwge30sICJzaGE1MTIteTZueE1HQjFuTVc5UjZrOTZlNWdkSUZ6Y2ZML2dUSlJOYXFHZXMxWXZrTG5QVlh6V2dicUZGMnlMQzBUOEc3NzRuMjRjeDNQZThYcktvbmlDT0FIK1E9PSJdLAoKICAgICJ0YXBhYmxlIjogWyJ0YXBhYmxlQDIuMy4zIiwgIiIsIHt9LCAic2hhNTEyLXV4Yy96cHFGZzZ4N0M4dk9FN2xoNkxiZGE4ZUVMOXptVm0vUExlVFBCUmhoMXhDZ2RXYVErSjFDVWllR3BJZm0ySGR0c1VwUnYrSHNoaWFzQk1jYzZBPT0iXSwKCiAgICAidGVyc2VyIjogWyJ0ZXJzZXJANS4xNi45IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBqcmlkZ2V3ZWxsL3NvdXJjZS1tYXAiOiAiXjAuMy4yIiwgImFjb3JuIjogIl44LjUuMCIsICJjb21tYW5kZXIiOiAiXjIuMjAuMCIsICJzb3VyY2UtbWFwLXN1cHBvcnQiOiAifjAuNS4yMCIgfSwgImJpbiI6IHsgInRlcnNlciI6ICJiaW4vdGVyc2VyIiB9IH0sICJzaGE1MTItSFBhL0ZkVEI5WEdJMkgxL2tlTEZaSHhsNldOdkFJNFlhbEhHdERRVGxNbkpjb3FTYWIxVXdMNGwxaEdFaHM2L0dtTEhCWklnL1lnQisramNiem9PRWc9PSJdLAoKICAgICJ0aW55YmVuY2giOiBbInRpbnliZW5jaEAyLjkuMCIsICIiLCB7fSwgInNoYTUxMi0wK0RVdnFXTVZhbExtaGE2bHI0a0Q4aUFNSzFIelYwL2FLbkN0V2I5djk2NDFUblAvTUZiN1BjMmJ4b3hRalRYQUVycnlYVmdVT2Z2MllxTmxscUdlZz09Il0sCgogICAgInRpbnlleGVjIjogWyJ0aW55ZXhlY0AxLjEuMiIsICIiLCB7fSwgInNoYTUxMi1kQXFTcUUvUmFicEJLSTgraDI2R2ZMcTZWYjNKVlhzMzBYWVFqZE1qYWovYzJ0UzhJWVlNYkl6UDU5OUt0Umo3YzU3L3dZQXBiM1FqZ1JnWG1yQ3VrQT09Il0sCgogICAgInRpbnlnbG9iYnkiOiBbInRpbnlnbG9iYnlAMC4yLjE2IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImZkaXIiOiAiXjYuNS4wIiwgInBpY29tYXRjaCI6ICJeNC4wLjQiIH0gfSwgInNoYTUxMi1wbjk5VmhvQUNZUjhuRkhoeHFpeCt1dnNiWGluZUFhc1dtNW9qWG9OOHhFd0s1S2QzL1RyaE5uMXdCeXVENTJVeFdSTHk4cHUra1JNbmlFaTZFcTlaZz09Il0sCgogICAgInRpbnlyYWluYm93IjogWyJ0aW55cmFpbmJvd0AzLjEuMCIsICIiLCB7fSwgInNoYTUxMi1CZitJTG1CZ3JldFVyZEp4elhNMFNnWExaM1hmaWFVdU9qL0lLUUh1VFhpcCswNVhuK3V5RVlkVmcwa1lEaXBUQmNMckNWeVV6QVB6N1FtQXJiMG1tdz09Il0sCgogICAgInRyZWUta2lsbCI6IFsidHJlZS1raWxsQDEuMi4yIiwgIiIsIHsgImJpbiI6IHsgInRyZWUta2lsbCI6ICJjbGkuanMiIH0gfSwgInNoYTUxMi1MME9ycGk4cUdwUkcvL05kK0g5MHZGQiszaUhudWUxelNTR21OT09DaDFHTEo3clVLVndWMkh2aWpwaEdRUzJVbWhVWmV3UzlWZ3Z4WUlkZ3IrZkcxQT09Il0sCgogICAgInRzbGliIjogWyJ0c2xpYkAyLjguMSIsICIiLCB7fSwgInNoYTUxMi1vSkZ1OTRIUWIrS1ZkdVNVUUw3d25wbXFuZm1Mc09BL25BaDZiNkVIMHdDRW9LMC9tUGVYVTZjM3dLRFY4M01rT3VIUFJIdFNYS0tVOTlJQmF6Uy8ydz09Il0sCgogICAgInR5cGVzY3JpcHQiOiBbInR5cGVzY3JpcHRANS45LjMiLCAiIiwgeyAiYmluIjogeyAidHNjIjogImJpbi90c2MiLCAidHNzZXJ2ZXIiOiAiYmluL3Rzc2VydmVyIiB9IH0sICJzaGE1MTItamwxdlp6UERpbkxyOWVVdDNKL3Q3VjZGZ05FdzlRanZCUGR5c3o5S2ZRREQ0MWZRckMyWTR2S1FkaWFVcEZUNGJYbGIxUkhoTHBwOHd0bTZNNVRnU3c9PSJdLAoKICAgICJ1bmRpY2ktdHlwZXMiOiBbInVuZGljaS10eXBlc0A2LjIxLjAiLCAiIiwge30sICJzaGE1MTItaXdEWnFnMFFBR3JnOVJhdjVING4wTTY0YzNta1I1OWNKNndRcCs3QzRuSTBnc21FeGFlZGFZTE5PNDRlVDRBdEJCd2piVGlHUE1sdDJNZDBUOUg5SlE9PSJdLAoKICAgICJ1c2Utc3luYy1leHRlcm5hbC1zdG9yZSI6IFsidXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmVAMS42LjAiLCAiIiwgeyAicGVlckRlcGVuZGVuY2llcyI6IHsgInJlYWN0IjogIl4xNi44LjAgfHwgXjE3LjAuMCB8fCBeMTguMC4wIHx8IF4xOS4wLjAiIH0gfSwgInNoYTUxMi1QcDZHU3dHUC9OclBJcnhWRkFJa09RZXl3OGxGZW5PSGlqUVdrVVRyRHZyRjRBTHF5bFAyQy9LQ2tlUzlkcFVNM0t2WVJRaG5hNXZ0N0lMOTUrWlE5dz09Il0sCgogICAgInZpdGUiOiBbInZpdGVAOC4wLjEzIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImxpZ2h0bmluZ2NzcyI6ICJeMS4zMi4wIiwgInBpY29tYXRjaCI6ICJeNC4wLjQiLCAicG9zdGNzcyI6ICJeOC41LjE0IiwgInJvbGxkb3duIjogIjEuMC4xIiwgInRpbnlnbG9iYnkiOiAiXjAuMi4xNiIgfSwgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiZnNldmVudHMiOiAifjIuMy4zIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkB0eXBlcy9ub2RlIjogIl4yMC4xOS4wIHx8ID49MjIuMTIuMCIsICJAdml0ZWpzL2RldnRvb2xzIjogIl4wLjEuMTgiLCAiZXNidWlsZCI6ICJeMC4yNy4wIHx8IF4wLjI4LjAiLCAiaml0aSI6ICI+PTEuMjEuMCIsICJsZXNzIjogIl40LjAuMCIsICJzYXNzIjogIl4xLjcwLjAiLCAic2Fzcy1lbWJlZGRlZCI6ICJeMS43MC4wIiwgInN0eWx1cyI6ICI+PTAuNTQuOCIsICJzdWdhcnNzIjogIl41LjAuMCIsICJ0ZXJzZXIiOiAiXjUuMTYuMCIsICJ0c3giOiAiXjQuOC4xIiwgInlhbWwiOiAiXjIuNC4yIiB9LCAib3B0aW9uYWxQZWVycyI6IFsiQHR5cGVzL25vZGUiLCAiQHZpdGVqcy9kZXZ0b29scyIsICJlc2J1aWxkIiwgImppdGkiLCAibGVzcyIsICJzYXNzIiwgInNhc3MtZW1iZWRkZWQiLCAic3R5bHVzIiwgInN1Z2Fyc3MiLCAidGVyc2VyIiwgInRzeCIsICJ5YW1sIl0sICJiaW4iOiB7ICJ2aXRlIjogImJpbi92aXRlLmpzIiB9IH0sICJzaGE1MTItTUZ0akJZZ3ptU3htZ0E0UkFmakl5WFdwR2Uxb0FMbmpnVVR6elY3UUx4L1RLeEN6anRNSDZGZDkvZVZLKzVGZzFxTm96NVZBd3NtTXMvTm9mcm1Kdnc9PSJdLAoKICAgICJ2aXRlc3QiOiBbInZpdGVzdEA0LjEuNiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAdml0ZXN0L2V4cGVjdCI6ICI0LjEuNiIsICJAdml0ZXN0L21vY2tlciI6ICI0LjEuNiIsICJAdml0ZXN0L3ByZXR0eS1mb3JtYXQiOiAiNC4xLjYiLCAiQHZpdGVzdC9ydW5uZXIiOiAiNC4xLjYiLCAiQHZpdGVzdC9zbmFwc2hvdCI6ICI0LjEuNiIsICJAdml0ZXN0L3NweSI6ICI0LjEuNiIsICJAdml0ZXN0L3V0aWxzIjogIjQuMS42IiwgImVzLW1vZHVsZS1sZXhlciI6ICJeMi4wLjAiLCAiZXhwZWN0LXR5cGUiOiAiXjEuMy4wIiwgIm1hZ2ljLXN0cmluZyI6ICJeMC4zMC4yMSIsICJvYnVnIjogIl4yLjEuMSIsICJwYXRoZSI6ICJeMi4wLjMiLCAicGljb21hdGNoIjogIl40LjAuMyIsICJzdGQtZW52IjogIl40LjAuMC1yYy4xIiwgInRpbnliZW5jaCI6ICJeMi45LjAiLCAidGlueWV4ZWMiOiAiXjEuMC4yIiwgInRpbnlnbG9iYnkiOiAiXjAuMi4xNSIsICJ0aW55cmFpbmJvdyI6ICJeMy4xLjAiLCAidml0ZSI6ICJeNi4wLjAgfHwgXjcuMC4wIHx8IF44LjAuMCIsICJ3aHktaXMtbm9kZS1ydW5uaW5nIjogIl4yLjMuMCIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJAZWRnZS1ydW50aW1lL3ZtIjogIioiLCAiQG9wZW50ZWxlbWV0cnkvYXBpIjogIl4xLjkuMCIsICJAdHlwZXMvbm9kZSI6ICJeMjAuMC4wIHx8IF4yMi4wLjAgfHwgPj0yNC4wLjAiLCAiQHZpdGVzdC9icm93c2VyLXBsYXl3cmlnaHQiOiAiNC4xLjYiLCAiQHZpdGVzdC9icm93c2VyLXByZXZpZXciOiAiNC4xLjYiLCAiQHZpdGVzdC9icm93c2VyLXdlYmRyaXZlcmlvIjogIjQuMS42IiwgIkB2aXRlc3QvY292ZXJhZ2UtaXN0YW5idWwiOiAiNC4xLjYiLCAiQHZpdGVzdC9jb3ZlcmFnZS12OCI6ICI0LjEuNiIsICJAdml0ZXN0L3VpIjogIjQuMS42IiwgImhhcHB5LWRvbSI6ICIqIiwgImpzZG9tIjogIioiIH0sICJvcHRpb25hbFBlZXJzIjogWyJAZWRnZS1ydW50aW1lL3ZtIiwgIkBvcGVudGVsZW1ldHJ5L2FwaSIsICJAdHlwZXMvbm9kZSIsICJAdml0ZXN0L2Jyb3dzZXItcGxheXdyaWdodCIsICJAdml0ZXN0L2Jyb3dzZXItcHJldmlldyIsICJAdml0ZXN0L2Jyb3dzZXItd2ViZHJpdmVyaW8iLCAiQHZpdGVzdC9jb3ZlcmFnZS1pc3RhbmJ1bCIsICJAdml0ZXN0L2NvdmVyYWdlLXY4IiwgIkB2aXRlc3QvdWkiLCAiaGFwcHktZG9tIiwgImpzZG9tIl0sICJiaW4iOiB7ICJ2aXRlc3QiOiAidml0ZXN0Lm1qcyIgfSB9LCAic2hhNTEyLTZsdmpiUzNwOWI0Q3JkQ21ndXpiaDIvNHVvWGhHRTJxNzFSNE9YNXNxRjlSMWJvOVhkNmZHck1BZnZwNXduQ3psQm5GVmRDT3A2b251VFFWYm84aVVRPT0iXSwKCiAgICAid2h5LWlzLW5vZGUtcnVubmluZyI6IFsid2h5LWlzLW5vZGUtcnVubmluZ0AyLjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJzaWdpbmZvIjogIl4yLjAuMCIsICJzdGFja2JhY2siOiAiMC4wLjIiIH0sICJiaW4iOiB7ICJ3aHktaXMtbm9kZS1ydW5uaW5nIjogImNsaS5qcyIgfSB9LCAic2hhNTEyLWhVcm1hV0JkVkRjeHZZcW55aDA5enVuS3pST1dqYlpUaU55OGRCRWprUzdlaEVEUWliWEo3WHZsbXRid3VUY2xVaUl5TitDeVhRRDRWbWtvOGZObTh3PT0iXSwKCiAgICAid3JhcC1hbnNpIjogWyJ3cmFwLWFuc2lANy4wLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiYW5zaS1zdHlsZXMiOiAiXjQuMC4wIiwgInN0cmluZy13aWR0aCI6ICJeNC4xLjAiLCAic3RyaXAtYW5zaSI6ICJeNi4wLjAiIH0gfSwgInNoYTUxMi1ZVkdJajJrYW1MU1R4dzZOc1pqb0J4ZlN3c24weWNkZXNtYzRwK1EyMWM1elB1WjFwbCtOZnhWZHhQdGRIdm1OVk9RNlhTWUc0QVV0eXQvRmk3RDE2UT09Il0sCgogICAgInkxOG4iOiBbInkxOG5ANS4wLjgiLCAiIiwge30sICJzaGE1MTItMHBmRnplZ2VEV0pISklBbVRMUlAyRHdIamRGNXM3am85dHV6dGRReEFoSU5DZHZTKzNuR0lOcVBkMDBBcGhxSlIvMExoQU5VUzYvKzdTQ2I5OFlPZkE9PSJdLAoKICAgICJ5YW1sIjogWyJ5YW1sQDIuOS4wIiwgIiIsIHsgImJpbiI6IHsgInlhbWwiOiAiYmluLm1qcyIgfSB9LCAic2hhNTEyLTJBdmhOWDNtYjh6ZDZaeTdJTlR0U3BsMUYxNUhXNlducWowc3JXbGtLTGNwWWwvZ01JTUppeXVHcTJLZUkyWUZ4VVBqZGxCKzNMYzEwc2VNTHRMNGNBPT0iXSwKCiAgICAieWFyZ3MiOiBbInlhcmdzQDE3LjcuMiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjbGl1aSI6ICJeOC4wLjEiLCAiZXNjYWxhZGUiOiAiXjMuMS4xIiwgImdldC1jYWxsZXItZmlsZSI6ICJeMi4wLjUiLCAicmVxdWlyZS1kaXJlY3RvcnkiOiAiXjIuMS4xIiwgInN0cmluZy13aWR0aCI6ICJeNC4yLjMiLCAieTE4biI6ICJeNS4wLjUiLCAieWFyZ3MtcGFyc2VyIjogIl4yMS4xLjEiIH0gfSwgInNoYTUxMi03ZFN6elJRKytDS25OSS9rcktuWVJWN0pLS1BVWE1FaDYxc29hSEtnOW1yV0VoekZXaEZueFB4R2wrNjljRDFPdTYzQzEzTlVQQ25tSWNydnFDdU02dz09Il0sCgogICAgInlhcmdzLXBhcnNlciI6IFsieWFyZ3MtcGFyc2VyQDIxLjEuMSIsICIiLCB7fSwgInNoYTUxMi10VnBzSlc3RGRqZWNBaUZwYklCMWUzcXhJUXNFNk5vUGM1L2VUZHJiYklDNGgwTFZzV2hub2EzZyttMkhjbEJJdWpIenN4WjRWSlZBK0dVdWMyL0xCdz09Il0sCgogICAgInpvZCI6IFsiem9kQDQuNC4zIiwgIiIsIHt9LCAic2hhNTEyLXl0RU5GaklKRmwyVXdZZ2xkZTJqY2hXMkh3bTRHSkZMRGlTWFdkVHJKUUJJTjlGY3lwN240RGh4SkVpV05BSk1WMS9CcVdmVy9ra2c3MVVEY0hKeVRRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLXdhc20zMi13YXNpL0BlbW5hcGkvY29yZSI6IFsiQGVtbmFwaS9jb3JlQDEuMTAuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAZW1uYXBpL3dhc2ktdGhyZWFkcyI6ICIxLjIuMSIsICJ0c2xpYiI6ICJeMi40LjAiIH0sICJidW5kbGVkIjogdHJ1ZSB9LCAic2hhNTEyLXlxNk9rSjRwODJDQWZQbDB1OW1RZWJRSEtQSmtZN1dySXVrMjA1Y1RZblllK2syWjhZQmgxMUZyYlJHL0g2aWhpcnFjYWNPZ2wyQklPOG95TVFMZVh3PT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLXdhc20zMi13YXNpL0BlbW5hcGkvcnVudGltZSI6IFsiQGVtbmFwaS9ydW50aW1lQDEuMTAuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi40LjAiIH0sICJidW5kbGVkIjogdHJ1ZSB9LCAic2hhNTEyLWV3dllsazg2eFVvR0kwelFSTnEvbUMrMTZSMVFlRGxLUXkyMUtpM29TWVhOZ0xiNDVHVjFQNkEwTSsvczZueUN1TkRxZTVWcGFZODRCelhHd1Zid0ZBPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLXdhc20zMi13YXNpL0BlbW5hcGkvd2FzaS10aHJlYWRzIjogWyJAZW1uYXBpL3dhc2ktdGhyZWFkc0AxLjIuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi40LjAiIH0sICJidW5kbGVkIjogdHJ1ZSB9LCAic2hhNTEyLXVUSUk3T1lGKy9NZXMvTXJjSU9ZcDV5T3RTTUxCV1NJb0xQcGNnd2lwb2lLYmxpNmszMjJ0Y29Gc3hvSUl4UERxVzAxU1FHQWdrbzRFelppMkJOdjJ3PT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLXdhc20zMi13YXNpL0BuYXBpLXJzL3dhc20tcnVudGltZSI6IFsiQG5hcGktcnMvd2FzbS1ydW50aW1lQDEuMS40IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB0eWJ5cy93YXNtLXV0aWwiOiAiXjAuMTAuMSIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJAZW1uYXBpL2NvcmUiOiAiXjEuNy4xIiwgIkBlbW5hcGkvcnVudGltZSI6ICJeMS43LjEiIH0sICJidW5kbGVkIjogdHJ1ZSB9LCAic2hhNTEyLTNOUU5OZ0ExWVNsSmIva01IMWlsZEFTUDlIVzcvN2tZblJJMnN6V0phb2ZhUzFoV21iR0k0SCtkMysyMmFHelhYTjlJSituK0dpRlZjR2lwSlAxOG93PT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLXdhc20zMi13YXNpL0B0eWJ5cy93YXNtLXV0aWwiOiBbIkB0eWJ5cy93YXNtLXV0aWxAMC4xMC4yIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRzbGliIjogIl4yLjQuMCIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItUm9CdkoyWDB3dUtsV0ZJanJ3ZmZHdzFJcVpIS1FxekljaEthYWRaWmZuTnBzQVlwMm1NMGgzNkp0UENqTkRBSEdnWWV6LzE1dU1CcGZHd2NoaGlNZ2c9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvdHNsaWIiOiBbInRzbGliQDIuOC4xIiwgIiIsIHsgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItb0pGdTk0SFFiK0tWZHVTVVFMN3ducG1xbmZtTHNPQS9uQWg2YjZFSDB3Q0VvSzAvbVBlWFU2YzN3S0RWODNNa091SFBSSHRTWEtLVTk5SUJhelMvMnc9PSJdLAoKICAgICJjaGFsay9zdXBwb3J0cy1jb2xvciI6IFsic3VwcG9ydHMtY29sb3JANy4yLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiaGFzLWZsYWciOiAiXjQuMC4wIiB9IH0sICJzaGE1MTItcXBDQXZSbDlzdHVPSHZlS3NuN0huY0pSdnY1MDFxSWFjS3pRbE8vK0x3eGM5KzBxMndMeXY0RGZ2dDgwL0RQbjJwcU9Cc0pkRGlvZ1hHUjkrT3Z3Unc9PSJdLAoKICAgICJuZXh0L3Bvc3Rjc3MiOiBbInBvc3Rjc3NAOC40LjMxIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIm5hbm9pZCI6ICJeMy4zLjYiLCAicGljb2NvbG9ycyI6ICJeMS4wLjAiLCAic291cmNlLW1hcC1qcyI6ICJeMS4wLjIiIH0gfSwgInNoYTUxMi1QUzA4SWJvaWE5bXRzLzJ5Z1YzZUxwWTVnaG5VY2ZMVi9FWFRPVzFFMnFZeEpLR0dCVXROak43NkZZSG5NczM2Um1BUm40MWJDMEFabW4rclIwT1ZwUT09Il0sCgogICAgInZpdGUvZnNldmVudHMiOiBbImZzZXZlbnRzQDIuMy4zIiwgIiIsIHsgIm9zIjogImRhcndpbiIgfSwgInNoYTUxMi01eG9EZlgrZkw3ZmFBVG5hZ21XUHBiRnR3aC9SNzdXbU1NcXFIR1M2NUMzdnZCMFlIcmdGK0IxWW1aMzQ0MXRNajVuNjNrMDIxMlhOb0p3emxoZmZRdz09Il0sCiAgfQp9Cg==" }, { "path": "metadata.json", "kind": "text", "content": '{\n "id": "fashion",\n "name": "Fashion",\n "tagline": "Editorial multi-drop fashion storefront with lookbooks and size guides.",\n "industry": "fashion",\n "tags": ["fashion", "apparel", "lookbook"],\n "stability": "stable",\n "schemaType": "Store",\n "mock": {\n "seedName": "fashion",\n "seedBusinessId": "bus_studio_frx"\n }\n}\n' }, { "path": "next.config.ts", "kind": "text", "content": 'import type { NextConfig } from "next";\n\n// Same-origin proxy target for the storefront API. The public key\n// decides: a real `cpk_live_\u2026` / `cpk_test_\u2026` only resolves against\n// hosted Cimplify, so browser cart writes go to the same place the\n// server catalogue reads come from. Anything else (`mock-dev`, empty)\n// falls back to the local `cimplify dev` mock in dev.\nconst publicKey = process.env.NEXT_PUBLIC_CIMPLIFY_PUBLIC_KEY?.trim() ?? "";\nconst keyTargetsHostedCimplify =\n publicKey.startsWith("cpk_live_") || publicKey.startsWith("cpk_test_");\nconst STOREFRONT_URL =\n process.env.NODE_ENV === "production" || keyTargetsHostedCimplify\n ? "https://storefronts.cimplify.io"\n : "http://127.0.0.1:8787";\n\nif (STOREFRONT_URL === "http://127.0.0.1:8787") {\n console.warn(\n "[cimplify] next.config resolved the local storefront API URL; production deploys must run with NODE_ENV=production.",\n );\n}\n\n// Cache Components (\'use cache\' + cacheTag/cacheLife) require Node-specific\n// setTimeout atomicity and serialize a postponed state that routinely exceeds\n// CF Workers\' 128MB zlib limit. We\'re on Cloudflare Workers via opennext, so\n// we stay on Next 16\'s "Previous Model" \u2014 `fetch.next.{revalidate,tags}` via\n// the SDK\'s `cacheOptions`, plus `export const revalidate` per page. See\n// https://nextjs.org/docs/app/guides/caching-without-cache-components.\nconst nextConfig: NextConfig = {\n async redirects() {\n return [\n { source: "/login", destination: "/account", permanent: false },\n { source: "/signup", destination: "/account", permanent: false },\n ];\n },\n async rewrites() {\n return [\n { source: "/api/v1/:path*", destination: `${STOREFRONT_URL}/api/v1/:path*` },\n { source: "/img/:path*", destination: `${STOREFRONT_URL}/img/:path*` },\n { source: "/elements/:path*", destination: `${STOREFRONT_URL}/elements/:path*` },\n { source: "/_mock/:path*", destination: `${STOREFRONT_URL}/_mock/:path*` },\n ];\n },\n images: {\n loader: "custom",\n loaderFile: "./lib/cimplify-loader.ts",\n remotePatterns: [\n { protocol: "http", hostname: "127.0.0.1", port: "8787", pathname: "/img/**" },\n { protocol: "http", hostname: "localhost", port: "8787", pathname: "/img/**" },\n { protocol: "http", hostname: "localhost", port: "3000", pathname: "/img/**" },\n { protocol: "https", hostname: "loremflickr.com", pathname: "/**" },\n { protocol: "https", hostname: "images.unsplash.com", pathname: "/**" },\n { protocol: "https", hostname: "static-tmp.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "storefrontassetscdn.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "cdn.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "res.cloudinary.com", pathname: "/cimplify/**" },\n ],\n },\n};\n\nexport default nextConfig;\n' }, { "path": "CLAUDE.md", "kind": "text", "content": "# CLAUDE.md\n\nThis project was scaffolded from a Cimplify storefront template (`cimplify init`).\n\n## Read these first\n\n- **`AGENTS.md`** at the project root \u2014 the file \u2194 `brand.X` field map for *this template's* industry, plus the architectural rules.\n- **`.claude/skills/cimplify-storefront/SKILL.md`** \u2014 the playbook for common tasks (rebrand, add a section, wire a Server Action, deploy, eject a component). Invoke it whenever you're asked to change content, palette, copy, or routing.\n\n## The two-line summary\n\n1. **Edit `lib/brand.ts`** for any visible string.\n2. **Edit `app/globals.css` `@theme` block** for any palette / radius / font change.\n\nThat covers ~95% of what merchants ask for. For anything else, follow the `cimplify-storefront` skill.\n\n## Don't do\n\n- Hardcode strings in pages or components.\n- Enable `cacheComponents: true` in `next.config.ts` \u2014 we're on Cloudflare Workers, where `'use cache'` postponed state blows past CF's 128MB zlib limit. This template stays on Next 16's \"Previous Model\" (ISR): `export const revalidate` per page + `cacheOptions: { revalidate, tags }` on SDK reads.\n- Add `'use cache'`, `cacheTag`, or `cacheLife` anywhere. Use the SDK's `cacheOptions` instead.\n- Use `unstable_cache` \u2014 it's gone in Next 16. Use SDK `cacheOptions` or `fetch.next.{revalidate,tags}`.\n- Run `bun test` (Bun's `vi` shim is incomplete) \u2014 use `bun run test:run`.\n" }, { "path": "app/about/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `About \u2014 ${brand.name}`,\n description: brand.description,\n};\n\nexport default function AboutPage() {\n const a = brand.about;\n // Title supports a single \\n for a hard line break.\n const titleParts = a.title.split("\\n");\n return (\n <article className="max-w-3xl mx-auto px-6 sm:px-8 py-16">\n <p className="text-[11px] font-mono uppercase tracking-[0.16em] text-primary mb-2">\n {a.eyebrow}\n </p>\n <h1 className="text-[clamp(2.25rem,5vw,3.5rem)] font-bold mb-6 -tracking-[0.025em] leading-tight">\n {titleParts.map((line, i) => (\n <span key={i}>\n {line}\n {i < titleParts.length - 1 && <br />}\n </span>\n ))}\n </h1>\n <div className="prose prose-lg max-w-none space-y-5 text-foreground/90 leading-relaxed">\n {a.paragraphs.map((p, i) => (\n <p key={i}>{p}</p>\n ))}\n {a.sections.map((s) => (\n <div key={s.heading}>\n <h2 className="text-2xl font-semibold mt-10 mb-3 -tracking-[0.02em]">\n {s.heading}\n </h2>\n <p>{s.body}</p>\n </div>\n ))}\n </div>\n </article>\n );\n}\n' }, { "path": "app/llms.txt/route.ts", "kind": "text", "content": 'import { getServerClient, tags, type Product } from "@cimplify/sdk/server";\nimport { brand } from "@/lib/brand";\nimport { getSiteUrl } from "@/lib/site-url";\n\nexport const revalidate = 3600;\n\nasync function buildLlmsTxt(SITE_URL: string): Promise<string> {\n const client = getServerClient();\n const [productsRes, categoriesRes, collectionsRes] = await Promise.all([\n client.catalogue.getProducts(\n { limit: 500 },\n { cacheOptions: { revalidate: 3600, tags: [tags.products()] } },\n ),\n client.catalogue.getCategories({\n cacheOptions: { revalidate: 3600, tags: [tags.categories()] },\n }),\n client.catalogue.getCollections({\n cacheOptions: { revalidate: 3600, tags: [tags.collections()] },\n }),\n ]);\n\n const products: Product[] = productsRes.ok ? productsRes.value.items : [];\n const categories = categoriesRes.ok ? categoriesRes.value : [];\n const collections = collectionsRes.ok ? collectionsRes.value : [];\n\n const lines: string[] = [];\n lines.push(`# ${brand.name}`);\n lines.push("");\n lines.push(`> ${brand.llms.summary}`);\n lines.push("");\n lines.push("## Browse");\n lines.push(`- [Home](${SITE_URL}/)`);\n lines.push(`- [Shop](${SITE_URL}/shop): Full catalogue with filter and sort.`);\n\n if (categories.length > 0) {\n lines.push("");\n lines.push("## Categories");\n for (const c of categories) {\n lines.push(\n `- [${c.name}](${SITE_URL}/categories/${c.slug})${c.description ? `: ${c.description}` : ""}`,\n );\n }\n }\n\n if (collections.length > 0) {\n lines.push("");\n lines.push("## Collections");\n for (const c of collections) {\n lines.push(\n `- [${c.name}](${SITE_URL}/collections/${c.slug})${c.description ? `: ${c.description}` : ""}`,\n );\n }\n }\n\n if (products.length > 0) {\n lines.push("");\n lines.push("## Products");\n for (const p of products) {\n const slug = p.slug ?? p.id;\n const price = `${brand.currency} ${p.default_price}`;\n const desc = p.description ? ` \u2014 ${p.description.replace(/\\s+/g, " ").slice(0, 200)}` : "";\n lines.push(`- [${p.name}](${SITE_URL}/products/${slug}) (${price})${desc}`);\n }\n }\n\n lines.push("");\n lines.push("## Information");\n lines.push(`- [About](${SITE_URL}/about)`);\n lines.push(`- [Support / FAQ](${SITE_URL}/faq)`);\n lines.push(`- [Terms of Service](${SITE_URL}/terms)`);\n lines.push(`- [Privacy Policy](${SITE_URL}/privacy)`);\n lines.push(`- [Sitemap (XML)](${SITE_URL}/sitemap.xml)`);\n lines.push("");\n lines.push("## Contact");\n lines.push(`- Email: ${brand.contact.email}`);\n lines.push(`- Phone: ${brand.contact.phone}`);\n lines.push(`- Address: ${brand.contact.address}`);\n\n return lines.join("\\n") + "\\n";\n}\n\n/**\n * `/llms.txt` \u2014 machine-readable site index for LLMs (per llmstxt.org).\n * Lets coding agents and chat assistants find products, categories, and\n * support pages without scraping HTML. Plain Markdown so it streams cheaply\n * into context windows.\n */\nexport async function GET(): Promise<Response> {\n const body = await buildLlmsTxt(await getSiteUrl());\n return new Response(body, {\n headers: {\n "Content-Type": "text/plain; charset=utf-8",\n "Cache-Control": "public, max-age=0, s-maxage=3600, stale-while-revalidate=86400",\n },\n });\n}\n' }, { "path": "app/contact/contact-form.tsx", "kind": "text", "content": `"use client";
|
|
5609
|
+
` }, { "path": "lib/site-url.ts", "kind": "text", "content": 'import { SITE_URL } from "./site.config";\n\n/** Canonical absolute URL for this storefront. */\nexport async function getSiteUrl(): Promise<string> {\n return SITE_URL;\n}\n' }, { "path": "lib/cimplify-loader.ts", "kind": "text", "content": 'import type { ImageLoader } from "next/image";\n\nimport { assetUrl, isCimplifyAsset } from "@cimplify/sdk";\n\nconst cdnBase = process.env.NEXT_PUBLIC_CIMPLIFY_CDN_URL?.trim() || undefined;\n\nconst cimplifyImageLoader: ImageLoader = ({ src, width, quality }) => {\n if (isCimplifyAsset(src, cdnBase)) {\n return assetUrl(src, {\n base: cdnBase,\n w: width,\n quality,\n format: "auto",\n });\n }\n return src;\n};\n\nexport default cimplifyImageLoader;\n' }, { "path": "lib/cart.ts", "kind": "text", "content": '"use client";\n\nimport { useCart } from "@cimplify/sdk/react";\n\n/**\n * Reactive cart count for the header pill. Subscribes to the SDK cart\n * state \u2014 updates immediately on add / remove / quantity change.\n */\nexport function useCartCount(): { count: number } {\n const { itemCount } = useCart();\n return { count: itemCount };\n}\n' }, { "path": ".gitignore", "kind": "text", "content": "node_modules\n.next\n.open-next\nout\n.env\n.env.local\n.env*.local\n.DS_Store\n*.tsbuildinfo\nnext-env.d.ts\n\n# Playwright runtime artifacts (commit the snapshots in e2e/__snapshots__/)\ntest-results/\nplaywright-report/\nblob-report/\n.playwright/\n" }, { "path": "package.json", "kind": "text", "content": '{\n "name": "__STOREFRONT_NAME__",\n "private": true,\n "version": "0.0.0",\n "scripts": {\n "dev": "concurrently -k -n mock,next -c blue,magenta \\"cimplify-mock --seed fashion --quiet\\" \\"next dev\\"",\n "dev:storefront": "next dev",\n "dev:mock": "cimplify-mock --seed fashion",\n "build": "next build",\n "start": "next start",\n "typecheck": "tsc --noEmit",\n "test": "vitest",\n "test:run": "vitest run",\n "check:brand": "vitest run __tests__/brand.test.ts",\n "check:cart": "vitest run __tests__/cart-flow.test.ts",\n "check:contract": "vitest run __tests__/contract.test.ts",\n "check:visual": "playwright test",\n "check:visual:update": "playwright test --update-snapshots",\n "check": "bun run typecheck && bun run test:run"\n },\n "dependencies": {\n "@cimplify/sdk": "^0.57.0",\n "next": "^16.2.6",\n "react": "^19.0.0",\n "react-dom": "^19.0.0"\n },\n "devDependencies": {\n "@playwright/test": "^1.50.0",\n "@tailwindcss/postcss": "^4.2.4",\n "@types/node": "^22.10.0",\n "@types/react": "^19.0.0",\n "@types/react-dom": "^19.0.0",\n "concurrently": "^9.0.0",\n "tailwindcss": "^4.2.4",\n "typescript": "^5.9.3",\n "vitest": "^4.1.5"\n }\n}\n' }, { "path": "bun.lock", "kind": "binary", "content": "ewogICJsb2NrZmlsZVZlcnNpb24iOiAxLAogICJjb25maWdWZXJzaW9uIjogMSwKICAid29ya3NwYWNlcyI6IHsKICAgICIiOiB7CiAgICAgICJuYW1lIjogIl9fU1RPUkVGUk9OVF9OQU1FX18iLAogICAgICAiZGVwZW5kZW5jaWVzIjogewogICAgICAgICJAY2ltcGxpZnkvc2RrIjogIl4wLjU0LjAiLAogICAgICAgICJuZXh0IjogIl4xNi4yLjYiLAogICAgICAgICJyZWFjdCI6ICJeMTkuMC4wIiwKICAgICAgICAicmVhY3QtZG9tIjogIl4xOS4wLjAiLAogICAgICB9LAogICAgICAiZGV2RGVwZW5kZW5jaWVzIjogewogICAgICAgICJAcGxheXdyaWdodC90ZXN0IjogIl4xLjUwLjAiLAogICAgICAgICJAdGFpbHdpbmRjc3MvcG9zdGNzcyI6ICJeNC4yLjQiLAogICAgICAgICJAdHlwZXMvbm9kZSI6ICJeMjIuMTAuMCIsCiAgICAgICAgIkB0eXBlcy9yZWFjdCI6ICJeMTkuMC4wIiwKICAgICAgICAiQHR5cGVzL3JlYWN0LWRvbSI6ICJeMTkuMC4wIiwKICAgICAgICAiY29uY3VycmVudGx5IjogIl45LjAuMCIsCiAgICAgICAgInRhaWx3aW5kY3NzIjogIl40LjIuNCIsCiAgICAgICAgInR5cGVzY3JpcHQiOiAiXjUuOS4zIiwKICAgICAgICAidml0ZXN0IjogIl40LjEuNSIsCiAgICAgIH0sCiAgICB9LAogIH0sCiAgInBhY2thZ2VzIjogewogICAgIkBhbGxvYy9xdWljay1scnUiOiBbIkBhbGxvYy9xdWljay1scnVANS4yLjAiLCAiIiwge30sICJzaGE1MTItVXJjQUJCKzRiVXJGQUJ3Ymx1VElCRXJYd3Zic1UvVjdUWldmbWJnSmZia3dpQnV6aVM5Z3hkT0RVeXVpZWNmZEdRODVqZ2xNVzZqdVMzK3o1VHNLTHc9PSJdLAoKICAgICJAYmFiZWwvcnVudGltZSI6IFsiQGJhYmVsL3J1bnRpbWVANy4yOS4yIiwgIiIsIHt9LCAic2hhNTEyLUppRFNoSDQ1ektIV3lHZTRaTlZSckNqQno4Tmg5VE1tWkcxa2g0UVRLOGhDQlRXQmk4RGEraTdzMWZKdzcvbFlwTTRjY2VwU05mcXpaL1F2QUJCaTVnPT0iXSwKCiAgICAiQGJhc2UtdWkvcmVhY3QiOiBbIkBiYXNlLXVpL3JlYWN0QDEuNS4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBiYWJlbC9ydW50aW1lIjogIl43LjI5LjIiLCAiQGJhc2UtdWkvdXRpbHMiOiAiMC4yLjkiLCAiQGZsb2F0aW5nLXVpL3JlYWN0LWRvbSI6ICJeMi4xLjgiLCAiQGZsb2F0aW5nLXVpL3V0aWxzIjogIl4wLjIuMTEiLCAidXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUiOiAiXjEuNi4wIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBkYXRlLWZucy90eiI6ICJeMS4yLjAiLCAiQHR5cGVzL3JlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgImRhdGUtZm5zIjogIl40LjAuMCIsICJyZWFjdCI6ICJeMTcgfHwgXjE4IHx8IF4xOSIsICJyZWFjdC1kb20iOiAiXjE3IHx8IF4xOCB8fCBeMTkiIH0sICJvcHRpb25hbFBlZXJzIjogWyJAZGF0ZS1mbnMvdHoiLCAiQHR5cGVzL3JlYWN0IiwgImRhdGUtZm5zIl0gfSwgInNoYTUxMi16MWdTQWxjZWQxeVkraU0rbUhERXRJa0Q4VUkzRWJzNTJNdUJQeHZWNmY1aFJ1dGsreHZDSC93dUI3aERxRHpLOUpHNUZvTXo1bmhycXRTczF3anQxQT09Il0sCgogICAgIkBiYXNlLXVpL3V0aWxzIjogWyJAYmFzZS11aS91dGlsc0AwLjIuOSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYmFiZWwvcnVudGltZSI6ICJeNy4yOS4yIiwgIkBmbG9hdGluZy11aS91dGlscyI6ICJeMC4yLjExIiwgInJlc2VsZWN0IjogIl41LjEuMSIsICJ1c2Utc3luYy1leHRlcm5hbC1zdG9yZSI6ICJeMS42LjAiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL3JlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgInJlYWN0IjogIl4xNyB8fCBeMTggfHwgXjE5IiwgInJlYWN0LWRvbSI6ICJeMTcgfHwgXjE4IHx8IF4xOSIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkB0eXBlcy9yZWFjdCJdIH0sICJzaGE1MTIteC9QRERDWXpvcVBwanJkeWIzVmN5eWxUSTJJalVYRXRZREdpNWZvaDdLc25tTkpJSWFWd0EyR0xnREgxZHBzMUdnWGlKYkE2MGhNK0F5dVRmUXpJdnc9PSJdLAoKICAgICJAY2ltcGxpZnkvc2RrIjogWyJAY2ltcGxpZnkvc2RrQDAuNTQuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYmFzZS11aS9yZWFjdCI6ICJeMS40LjEiLCAiY2xzeCI6ICJeMi4xLjEiLCAiZGF0ZS1mbnMiOiAiXjQuMS4wIiwgImxpYnBob25lbnVtYmVyLWpzIjogIjEuMTIuNDEiLCAicmVhY3QtZGF5LXBpY2tlciI6ICJeOS4xNC4wIiwgInRhaWx3aW5kLW1lcmdlIjogIl4zLjUuMCIsICJ6b2QiOiAiXjQuNC4zIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkBwYXlzdGFjay9pbmxpbmUtanMiOiAiXjIuMjIuOCIsICJtc3ciOiAiPj0yLjAuMCIsICJyZWFjdCI6ICI+PTE3LjAuMCIsICJ2aXRlc3QiOiAiPj0yLjAuMCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIkBwYXlzdGFjay9pbmxpbmUtanMiLCAibXN3IiwgInJlYWN0IiwgInZpdGVzdCJdLCAiYmluIjogeyAiY2ltcGxpZnktbW9jayI6ICJkaXN0L21vY2svY2xpLm1qcyIgfSB9LCAic2hhNTEyLVlVTi9sT3FWaUhjaTF2OVVTV1d3QVd0eTI5cEVYQmRMVHVLYXJTbDhFcGFmV2g1amtkR1oxUStOZTkvYmZnVFptUjhpVFVsdEE4VTdnbFYyRm9SU2dnPT0iXSwKCiAgICAiQGRhdGUtZm5zL3R6IjogWyJAZGF0ZS1mbnMvdHpAMS40LjEiLCAiIiwge30sICJzaGE1MTItUDVMVU5odGJqNllmSTNpSmp3NUVMOWVVQUc2T2l0RDBXM2ZXUWNwUWpEUmMvUUlzTDB0Uk51TzFQY0R2UGNjV0wxZlNUWFhkRTFkcytsOTVEVi9PRkE9PSJdLAoKICAgICJAZW1uYXBpL2NvcmUiOiBbIkBlbW5hcGkvY29yZUAxLjEwLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGVtbmFwaS93YXNpLXRocmVhZHMiOiAiMS4yLjEiLCAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTIteXE2T2tKNHA4MkNBZlBsMHU5bVFlYlFIS1BKa1k3V3JJdWsyMDVjVFluWWUrazJaOFlCaDExRnJiUkcvSDZpaGlycWNhY09nbDJCSU84b3lNUUxlWHc9PSJdLAoKICAgICJAZW1uYXBpL3J1bnRpbWUiOiBbIkBlbW5hcGkvcnVudGltZUAxLjEwLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTItZXd2WWxrODZ4VW9HSTB6UVJOcS9tQysxNlIxUWVEbEtReTIxS2kzb1NZWE5nTGI0NUdWMVA2QTBNKy9zNm55Q3VORHFlNVZwYVk4NEJ6WEd3VmJ3RkE9PSJdLAoKICAgICJAZW1uYXBpL3dhc2ktdGhyZWFkcyI6IFsiQGVtbmFwaS93YXNpLXRocmVhZHNAMS4yLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidHNsaWIiOiAiXjIuNC4wIiB9IH0sICJzaGE1MTItdVRJSTdPWUYrL01lcy9NcmNJT1lwNXlPdFNNTEJXU0lvTFBwY2d3aXBvaUtibGk2azMyMnRjb0ZzeG9JSXhQRHFXMDFTUUdBZ2tvNEV6WmkyQk52Mnc9PSJdLAoKICAgICJAZXNidWlsZC9haXgtcHBjNjQiOiBbIkBlc2J1aWxkL2FpeC1wcGM2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYWl4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi0xVkNJQ1d5cGVRS2hWYkU5b1cvc0phQW1qTHhoVnFhY2RrdlBMRWp3bHR0amZ3RU5SU0NsUzhFakJ6MEt6UnlGU0NQRElrdVhXMzRKZS92azd6ZEI3UT09Il0sCgogICAgIkBlc2J1aWxkL2FuZHJvaWQtYXJtIjogWyJAZXNidWlsZC9hbmRyb2lkLWFybUAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtIiB9LCAic2hhNTEyLVFOZFFFcHM3RGZGd0UzaFhpVTRCWmVPVjY4SEh6WXdHZDBOdGhoZDN1Q2trRUtLNy9SNk1UZ00wUDdIN0ZBczVwVS9ESVdzdmlNbUVHeEVveElaK1pRPT0iXSwKCiAgICAiQGVzYnVpbGQvYW5kcm9pZC1hcm02NCI6IFsiQGVzYnVpbGQvYW5kcm9pZC1hcm02NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItYkJ5NjlwZ2ZoTUd0Q253cEMveDVRaGZ4QXovY0JnUTllbmJ0d2pmNlY5bG5QSS9oTXlUOWlXcFIxYXJtMGwza3R0VHI0TDBLU0xwS21McC9pbEtTOUE9PSJdLAoKICAgICJAZXNidWlsZC9hbmRyb2lkLXg2NCI6IFsiQGVzYnVpbGQvYW5kcm9pZC14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImFuZHJvaWQiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1UVmhkVnRRSUZ1VnBJSVIyODJidGNHQzJvR1FvU2ZaZm1CZFRpcDJhbkNhVlljcVdsWlhHY2RjS0lVa2xmWDJ3ajBKa2xOWWd6MzlPQnFoMmNxWHZjUT09Il0sCgogICAgIkBlc2J1aWxkL2Rhcndpbi1hcm02NCI6IFsiQGVzYnVpbGQvZGFyd2luLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVkxZ2lDZk00bmxIRFdFZlNja016ZVdOZFFTMzFCUUdzOS9yb3V3NlViOTF0a0s3OWFJTVRIM3E5eEh2ekg4ZDB3RHJ1NUNpMGtXQjhiM3VwL25sMTZnPT0iXSwKCiAgICAiQGVzYnVpbGQvZGFyd2luLXg2NCI6IFsiQGVzYnVpbGQvZGFyd2luLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiZGFyd2luIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItQ0pzcnk4WkdNNVZGVmV5VVlCM2NkS3BkL0g2OVBZZXo0ZUpoMVcvdDM4dnp1dGRqRWp0UDdoQjZlTEtCb09keGNBbEN0RVlIelEvUEovb1U5STR1MEE9PSJdLAoKICAgICJAZXNidWlsZC9mcmVlYnNkLWFybTY0IjogWyJAZXNidWlsZC9mcmVlYnNkLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi15WXErMzlObFRSelUyWG1vUFc0bDVJZnBsOWZxU2swbkFKWU0vVi9XVUdQRUZmZWsxZXBMSEpJa1RRTTZiQnMxc3dBcGpPNW5XZ3ZyODQzZzZUanh1UT09Il0sCgogICAgIkBlc2J1aWxkL2ZyZWVic2QteDY0IjogWyJAZXNidWlsZC9mcmVlYnNkLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAiZnJlZWJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLTBGZ3ZPSjZVVU1mbHNIU1BMemRmRG5uQkJWb0NEdEJUVnluL01yV2xvVU52cS81U0ZtaDEzbDNkdmdSUGtEaWhSeGI3N1kxN01icWJDQWEyc3RyTVFRPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtYXJtIjogWyJAZXNidWlsZC9saW51eC1hcm1AMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTIta3JvNGMwUDg1R01mRllxVzRUV09wdm1GOHJGU2hiV0duckxxbHpwNFgxVE5XalJZM0pNWVVmREN0T3hQS09JWThCMFdDOEhONTFoR1A0STRoejRBYVE9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1hcm02NCI6IFsiQGVzYnVpbGQvbGludXgtYXJtNjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi0rODlVc1FUZlhkbWpJdlpTNm5Vbk9PTG9YbmtVVEI5aFI1UUFlTHJRZHpPU1dadk5TQVhBdGNSREhXdHFBVXRBbXY3Wk0xV1BPT2VTeER6enpNb2dpUT09Il0sCgogICAgIkBlc2J1aWxkL2xpbnV4LWlhMzIiOiBbIkBlc2J1aWxkL2xpbnV4LWlhMzJAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJpYTMyIiB9LCAic2hhNTEyLXlURWpvYXB5OFVQM3J2OGRCMGlwM0FmTXBSYnloU04zK2hZOG1vL2k0UVhGZUR4bWlZYkVLcDNaUmpCS2NPUDg2MlVhNGIxUERmd2x2YnV3WTdoSUdRPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtbG9vbmc2NCI6IFsiQGVzYnVpbGQvbGludXgtbG9vbmc2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItTmVxcVlrcmNHekZ3aTZDR1JHTk1PaldHR1NZT3Bxd0NqUzlmdmFVbFg1czN6d090bjFxd2cxczJpRTJzdkJlNFEvWU9HMXE2ODc1bGNBb1FLL0Y0VkE9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1taXBzNjRlbCI6IFsiQGVzYnVpbGQvbGludXgtbWlwczY0ZWxAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJub25lIiB9LCAic2hhNTEyLUljdlRsRjlkdExyZkwvTThXZ05JL3FKWUJFTlAzZWtnc0hiWVVJekV6cTVYSnp6VkVWL2ZYWTlXRlBmRUVYbXUzY2sycUpQOExHL3AzUThmN1pjMlhnPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgtcHBjNjQiOiBbIkBlc2J1aWxkL2xpbnV4LXBwYzY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAicHBjNjQiIH0sICJzaGE1MTItSE95MGFMVEpUVnRvVGVHWmg0SFNYYU82TTk1cXU0azVsSmNINGd4djU2aWF5Y2Z6MVM4R08vNUpoNlg0WTFZaUkwaDdjUnlMaStIaXhNUis4OHN3YWc9PSJdLAoKICAgICJAZXNidWlsZC9saW51eC1yaXNjdjY0IjogWyJAZXNidWlsZC9saW51eC1yaXNjdjY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1pOEpVREF1ZnB6OWpPem80eUlTaENUY1h6UzA3dkVnV3p5WDNOSDJHN0xFRlZnckxFaGp3TDNhakZFNGZaSTNJNFpnaU03SkgzR1E3UmVPYlJPdlNVQT09Il0sCgogICAgIkBlc2J1aWxkL2xpbnV4LXMzOTB4IjogWyJAZXNidWlsZC9saW51eC1zMzkweEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogInMzOTB4IiB9LCAic2hhNTEyLWpGbnUrNlViTGx6SWpQUXBXQ05oNVF0cmNOZk1MamdJYXZud1BRQWZvR3g0cTE3b2NPVTlNc1EyUVZ2Rnh3UW9XcFpUOER2VExvb1R2bU9RWGtPNTFnPT0iXSwKCiAgICAiQGVzYnVpbGQvbGludXgteDY0IjogWyJAZXNidWlsZC9saW51eC14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItNmUwY3ZYd3pPblZXSkhxK21za1A4RE5TcktCcjFiVUxCdm5GTHBjMUtZK2QraXJaU2daMDJUR3NlNUZzYWZLUzVqZzJlNHBidks2VFBYYUYvQTYrQ0E9PSJdLAoKICAgICJAZXNidWlsZC9uZXRic2QtYXJtNjQiOiBbIkBlc2J1aWxkL25ldGJzZC1hcm02NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAibm9uZSIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItdlVua0JZeFpXNGhML2llOTFoU3FhU05qdWxPbllYRTFWU0x1c252SGcydTNqZXdKQnozWXpCOStvQ3c4REFCZVZxWkdnOTR0OXR5WkZvSG1hOGdXWlE9PSJdLAoKICAgICJAZXNidWlsZC9uZXRic2QteDY0IjogWyJAZXNidWlsZC9uZXRic2QteDY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJub25lIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItWEFnOHBJUW41Q3poT0I4b2RJY0FtNDJRc09mYTk4U0JlS1VkbzR4YThPdlg4TGJNWnFFdGdlV0U5UC9XeHQ3TWxHMlFxdmpHdGhzK25xNDhUclVpS3c9PSJdLAoKICAgICJAZXNidWlsZC9vcGVuYnNkLWFybTY0IjogWyJAZXNidWlsZC9vcGVuYnNkLWFybTY0QDAuMjUuNCIsICIiLCB7ICJvcyI6ICJvcGVuYnNkIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1DdDJXY0ZFQU5sRkR0cDFuVkFYU05CUER4eVUrajcrdElkLy9pSFhVMmYvbE41QW1PNHpMeWhEY3BSNUN6MXIwOG1WeHp0M0pweXQ0UG1YUTFPNis3QT09Il0sCgogICAgIkBlc2J1aWxkL29wZW5ic2QteDY0IjogWyJAZXNidWlsZC9vcGVuYnNkLXg2NEAwLjI1LjQiLCAiIiwgeyAib3MiOiAib3BlbmJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLXhBR0doeU9ROU90bTFYdThOVDFpZkdMbkE2TTNzSnhaNml4eWxiK3ZJVVZ6dnZkNkdPQUxwd1FyWXJ0bFBvdU1xZC92U2JnZWh6NkhhVms0KzdBZmh3PT0iXSwKCiAgICAiQGVzYnVpbGQvc3Vub3MteDY0IjogWyJAZXNidWlsZC9zdW5vcy14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogInN1bm9zIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItTXcrdHp5NHBwNndaRUswK0x3cjc2cFdManJ0am1KeVVCMjN0SEtxRURQNzRSM3E5NWx1WS9iWHFYWmVZbDROWWx2d09xb1JLbEluUWlhbGdDS3k2N1E9PSJdLAoKICAgICJAZXNidWlsZC93aW4zMi1hcm02NCI6IFsiQGVzYnVpbGQvd2luMzItYXJtNjRAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1BVlVQNDI4VlFUU2RkZ3V6OWRPOW5nYitFNWFTY3lnN25PZUpEckYxSFBZdTU1NWdtemEzYkRHTVBobVZYTDhzdkRTb3FQQ3NDUGpiMjY1eUcva0xLUT09Il0sCgogICAgIkBlc2J1aWxkL3dpbjMyLWlhMzIiOiBbIkBlc2J1aWxkL3dpbjMyLWlhMzJAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJpYTMyIiB9LCAic2hhNTEyLWkxc1crMWkrb1d2UXpTZ2ZSY3h4RzJrNEk5bjNPOU5ScXk4VSt1dWdhVDJEeTdrTE85WTd3STcyaGFPYWh4Y2VNWDhoWkF6Z0dvdTFGaG5kUmxkeFJnPT0iXSwKCiAgICAiQGVzYnVpbGQvd2luMzIteDY0IjogWyJAZXNidWlsZC93aW4zMi14NjRAMC4yNS40IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItbk9UMnZaTnc2aEorejQzb1AxU1BlYS9HLzZBYk42WCtiR05oTnVxOE50Ukh5NHdzTWh3NzY1SUtMTm1uamVrN0d2aldCWVE4UTVWQm9ZVEZnOXkxVVE9PSJdLAoKICAgICJAZmxvYXRpbmctdWkvY29yZSI6IFsiQGZsb2F0aW5nLXVpL2NvcmVAMS43LjUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGZsb2F0aW5nLXVpL3V0aWxzIjogIl4wLjIuMTEiIH0gfSwgInNoYTUxMi0xSWg0V1RXeXcwK2xLeUZNY0JIR2JiNVU1RnR1SEp1dWpveXlyNXpUYVdTNUVZTWVUNkpiMkF1RGVmdHNDc0V1Y2hPK21NMmlqNStxOWNyaHlkekxoUT09Il0sCgogICAgIkBmbG9hdGluZy11aS9kb20iOiBbIkBmbG9hdGluZy11aS9kb21AMS43LjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGZsb2F0aW5nLXVpL2NvcmUiOiAiXjEuNy41IiwgIkBmbG9hdGluZy11aS91dGlscyI6ICJeMC4yLjExIiB9IH0sICJzaGE1MTItOWdaU0FJNVhNMzY4ODBQUE1tLy85ZGZpRW5nWW9DNkFtMml6RVMxRkY0MDZZRnNqdnlCTW1lSjJnNFNBanUzeFd3dHV5bk5SRkwyczloZ3hwTEk1U1E9PSJdLAoKICAgICJAZmxvYXRpbmctdWkvcmVhY3QtZG9tIjogWyJAZmxvYXRpbmctdWkvcmVhY3QtZG9tQDIuMS44IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBmbG9hdGluZy11aS9kb20iOiAiXjEuNy42IiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgInJlYWN0IjogIj49MTYuOC4wIiwgInJlYWN0LWRvbSI6ICI+PTE2LjguMCIgfSB9LCAic2hhNTEyLWNDNTJiSHdNL24vQ3hTODdGSDB5V2RuZ0VacmpkdExXL3FWcnVvNjhxZytwcks3WlE0WUdkdXQyR3lEVnBvR2VBWWUvaDg5OXJWZU9WbTZPaTQwazJBPT0iXSwKCiAgICAiQGZsb2F0aW5nLXVpL3V0aWxzIjogWyJAZmxvYXRpbmctdWkvdXRpbHNAMC4yLjExIiwgIiIsIHt9LCAic2hhNTEyLVJpQi95SWg3OHBjSXhsNmxMTUcwQ2dCWEFaMlkwZVZIcU1QWXVndSs5VTBBZVQ2WUJlaUpwZjdsYmRKTkl1Z0ZQNVNJandOUmdvNERoUjFReGkyNkdnPT0iXSwKCiAgICAiQGltZy9jb2xvdXIiOiBbIkBpbWcvY29sb3VyQDEuMS4wIiwgIiIsIHt9LCAic2hhNTEyLVRkNzZxN2o1N28vdExWZGdTNzQ2Y1lBUmZTeXhrOGlFZlJ4ZXdMOWg0T016WWhiVzRUQWNwcGwwbVQ0ZXlxWGRkaDZML2p3b003NW1vN2l4YS9wQ2VRPT0iXSwKCiAgICAiQGltZy9zaGFycC1kYXJ3aW4tYXJtNjQiOiBbIkBpbWcvc2hhcnAtZGFyd2luLWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiAiMS4yLjQiIH0sICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLWltdFEzV01KWGJNWTRmeGIvTmRwNkhCVE5WdFdDVUkwV2RvYnloZUdmNSthZDZ4WDhWSURPOHUyeEU0cWMvZnIwOENLRy83ZERzZUZ0bjZNNmcvcjN3PT0iXSwKCiAgICAiQGltZy9zaGFycC1kYXJ3aW4teDY0IjogWyJAaW1nL3NoYXJwLWRhcndpbi14NjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWRhcndpbi14NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1ZTkVGQUYvNEtRL1BlVzBOK3IrYVZWc29JWTAvcXh4aWtGMlNXZHArTlJrbU1CN3k5TEJaQVZxUTR5aEdDbS9IM0gyNzBPU3lrcW1RTUtMQmhCSkRFdz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4tYXJtNjRAMS4yLjQiLCAiIiwgeyAib3MiOiAiZGFyd2luIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi16cWpqbzdSYXRGZkZvUDBNa1E1MWpmdUZaQm5WRTJwUmlheWRLSjFHL3JIWnZuc3JIQU9jUUFMSWk5c0E1Y281eGVuUWRUdWdDdnRiMWN1Zjc4VmY0Zz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4teDY0IjogWyJAaW1nL3NoYXJwLWxpYnZpcHMtZGFyd2luLXg2NEAxLjIuNCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi0xSU9kNXhmVmhsR3dYK3pYdjJOOTNrMHlNT052VWxBTnlsYkp3MWVUYWg4Sy9KdHBpMTVLQytXU2lhWC9uQm1ibTJIeFJNMWdaMG5TZGpTc3JaYkdLZz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm0iOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm1AMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybSIgfSwgInNoYTUxMi1iRkk3eGNLRkVMZGlOQ1ZvdjhlNDRJYTR1MmJ5QStsM1h0c0FqK1E4dGZDd082QlE4aURvallkdm9QTXFzS0RrdW9PbytYNkhaQTBzMHExMUFOTVE4QT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm02NCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybTY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1leGNqWDhEZnNJY0oxMHgxS3pyNFJjV2UxZWRDOVBxdURSUlB4M1lWQ3ZRditVNXA3WWluMnMzMmZ0emlrWG9qYjFQSUZjLzlNdDI4L3kraVJrbGtydz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1wcGM2NCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi1GTXV2R2lqTERZRzZsVytiL1V2eWlsVVd1NUF5dSszcjJkMVM4bm90aUdDSXlZVS83NmVpZzFVZk1ta1o3dndnT3J6S3psUWJGU3VRZmdtN0dZVVBwQT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1yaXNjdjY0IjogWyJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgtcmlzY3Y2NEAxLjIuNCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1vVkRiY1I0elVDMGNlODJ0ZXViU20reDZFVGl4dEtaQmgvcWJSRUlPY0kzY1VMekR5YjE4U3IvV2N5eDdOUlFlUXpPaUhUTmJaRkYxVXdQUzJzY3lHQT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1zMzkweCI6IFsiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXMzOTB4QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJzMzkweCIgfSwgInNoYTUxMi1xbXA5VnJ6Z1BnTW9HWnlQdnJRSHFrMDJ1eWpBMC9RclRPMjZUcWs2bDRaVjBNUFdJVzZMVGtxT0lvditKMXlFdTdNYkZRYURwd2R3SktoYkp2dVJ4UT09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjRAMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi10SnhpaUxzbUhjOUF4MWJ6M29hT1lCVVJUWEdJUkRPREJxaHZlVkhvbnJISjkvK2s4OXFiTGwwYmNKbnMrZTR0NHJ2YU5CeGFFWnNGdFNmQWRxdVBydz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjRAMS4yLjQiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLUZWUUh1d3gxSUl1Tm93OVFBYllVekorRW44S2NWbTlMazUrdUdVUUpIYVptTUVDWm1PbGl4OUhuSDduMVRSa1hNUzBwR3hJSm9rSVZCOVN1cVpHR1h3PT0iXSwKCiAgICAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4bXVzbC14NjQiOiBbIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wteDY0QDEuMi40IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItK0xweUJrN0w0NFpJWHd6L1ZZZmdsYVgvb2t4ZXpFU2M2VXhEU295bzJLczZKeGM0WTdzR2pwZ1U5czRQTWdxZ2pqMWdaQ3lsVGllTmFtcUExTUY3RGc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4LWFybSI6IFsiQGltZy9zaGFycC1saW51eC1hcm1AMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybSI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItOWRMcXN2d3RnMXV1WEJHWktzeGVtOTU5NSt1anYwc0o2Vmk4d2NUQU5TRnB3Vi9HT05hdDVlQ2t6UW8vMU82elJJa2gwbS84KzVCanJScjdqRFVTWnc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4LWFybTY0IjogWyJAaW1nL3NoYXJwLWxpbnV4LWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm02NCI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1iS1F6YUpSWS9ia1BPWHlLeDVFVnVwN3FrYW9qRUNHNk5MWXN3Z2t0T1pqYVhlY1NBZUNXaVp3d2lGZjMvWStPMUhyYXVpRTNGVnNHeEZnOGMyNHJaZz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGludXgtcHBjNjQiOiBbIkBpbWcvc2hhcnAtbGludXgtcHBjNjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXBwYzY0IjogIjEuMi40IiB9LCAib3MiOiAibGludXgiLCAiY3B1IjogInBwYzY0IiB9LCAic2hhNTEyLTd6em53TmFxVzZZdHNmckdHREE2QlJrSVNLQUFFMUpvMFFkcE5ZWE5NSHUyKzBkVHJQZmxUTE5rcGM4bDdNVVA1TTE2WkpjVXZ5c1ZXV3JNZWZacXVBPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eC1yaXNjdjY0IjogWyJAaW1nL3NoYXJwLWxpbnV4LXJpc2N2NjRAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXJpc2N2NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi01MWdKdUxQVEthN3BpWVBhVnM4R21CeW83L1U3LzdUWk9xK2NuWEpJSFpLYXZJUkhBUDc3ZTNOMkhFbDNkZ2lxZEQvdzB5VWZpSm5JSTc3UHVEREZkdz09Il0sCgogICAgIkBpbWcvc2hhcnAtbGludXgtczM5MHgiOiBbIkBpbWcvc2hhcnAtbGludXgtczM5MHhAMC4zNC41IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXMzOTB4IjogIjEuMi40IiB9LCAib3MiOiAibGludXgiLCAiY3B1IjogInMzOTB4IiB9LCAic2hhNTEyLW5RdENrMFBkS2ZobzNlQzVNcmJRb2lnSjJnZDFDZ2RkVU1rYWJVaityQmV2czh0WjJjVUxPeDQ2RTdveVgrMDRXR2ZBQmdJd21NQzBWcWllVGlSNGpnPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eC14NjQiOiBbIkBpbWcvc2hhcnAtbGludXgteDY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC14NjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLU1FemQ4SFBLeFZ4VmVud0FhK0pSUHdFQzdRRmpvUFd1UzVOWm5CdDZCM3B1N0VHMkdlMGlkMW9MSFpwUEpkbjNPUUsrQlFEaXc5elN0aUhCVEpRUVFRPT0iXSwKCiAgICAiQGltZy9zaGFycC1saW51eG11c2wtYXJtNjQiOiBbIkBpbWcvc2hhcnAtbGludXhtdXNsLWFybTY0QDAuMzQuNSIsICIiLCB7ICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wtYXJtNjQiOiAiMS4yLjQiIH0sICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItZnBySlI2R3RSc010Nkt5ZnE0NElzQ2hWWmVHTjk3Z1REMzMxd2VSMWV4MWMxcnlwREVBQk42VG0yeGExd0U2bFliNURkRW5rMDNOWlBxQTdJZDIxeWc9PSJdLAoKICAgICJAaW1nL3NoYXJwLWxpbnV4bXVzbC14NjQiOiBbIkBpbWcvc2hhcnAtbGludXhtdXNsLXg2NEAwLjM0LjUiLCAiIiwgeyAib3B0aW9uYWxEZXBlbmRlbmNpZXMiOiB7ICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXhtdXNsLXg2NCI6ICIxLjIuNCIgfSwgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSmc4d05UMU1Vekl2aEJGeFZpcXJFaFdER3pxeW1vM3NWN3o3WnNhV2JaTkRMWFJKWm9SR3JqdWxwNjBZWXRWNHdmWThWSUtjV2lkam9qbExjV3JkOFE9PSJdLAoKICAgICJAaW1nL3NoYXJwLXdhc20zMiI6IFsiQGltZy9zaGFycC13YXNtMzJAMC4zNC41IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvcnVudGltZSI6ICJeMS43LjAiIH0sICJjcHUiOiAibm9uZSIgfSwgInNoYTUxMi1PZFdURWlWa1kyUEh3cWtiQkk4ZnJGeFFRRmVrSGFTU2tVSUprd3pjbFdaZTY0TzFYNFVsVWpxcXFMYVBiVXBNT1FrNkZCdS9IdGxHWE5ibElzMGh1dz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzItYXJtNjQiOiBbIkBpbWcvc2hhcnAtd2luMzItYXJtNjRAMC4zNC41IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1XUTNBZ1dDV1lTYjJ5dCtJRzhtbkM2SmRrOVdoczdPMGd4cGhibHNMdmRoU3BTVHRtdTY5WkcxR2tiNk51dnhzTkFDd2lQVjZjTlNaTnp0MEtQc3c3Zz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzItaWEzMiI6IFsiQGltZy9zaGFycC13aW4zMi1pYTMyQDAuMzQuNSIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAiaWEzMiIgfSwgInNoYTUxMi1GVjltLzdObWVDbVNIREQ1ajQrNHBOSThDcDNhVytKdkxvWGNUVW8wSXF5alNmQVpKOGRJVW1pangxcWFKc0lpVStIb3N3NnhNNUtpakFXUkpDU2dOZz09Il0sCgogICAgIkBpbWcvc2hhcnAtd2luMzIteDY0IjogWyJAaW1nL3NoYXJwLXdpbjMyLXg2NEAwLjM0LjUiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi0rMjlZTXNxWTIvOWVGRWlXOTNlcVdudUxjV2N1Zm93WGV3d1NOSVQ2VXdaZFVVQ3JNM29Gak1XSC9aNi9UTW1iNGhsRmVubWZBVmJwV2V1cDJqcnlDdz09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogWyJAanJpZGdld2VsbC9nZW4tbWFwcGluZ0AwLjMuMTMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjIjogIl4xLjUuMCIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjQiIH0gfSwgInNoYTUxMi0ya2t0LzduaUo2TWdFUHhGMGJZZFE2ZXRaYUErZlF2RGNMS2NraHkxeUlRT3phb0tqQkJqU2o2My9hTFZqWUUzcWhSdDVkdk0rdVV5ZkNnNlVLQ0JiQT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3JlbWFwcGluZyI6IFsiQGpyaWRnZXdlbGwvcmVtYXBwaW5nQDIuMy41IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogIl4wLjMuNSIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjQiIH0gfSwgInNoYTUxMi1MSTl1LytsYVlHNERzMVRES1NKVzJZUHJJbGNWWU93aTJmVUM2eEI0M2x1ZUNqZ3hWNGxmZk9DWkN0WUZpSDZUTk9YK3RRS1h4OTdUNElLSGJoeUhFUT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3Jlc29sdmUtdXJpIjogWyJAanJpZGdld2VsbC9yZXNvbHZlLXVyaUAzLjEuMiIsICIiLCB7fSwgInNoYTUxMi1iUklTZ0NJalAyMC90YldTUFdNRWk1NFFWUFJaRXhrdUQ5bEpMK1VJeFVLdHdWSkE4d1cxVHJiMWpNczFSRlhvMUNCVE5aLzVocEM5UXZtS1dkb3BLdz09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3NvdXJjZS1tYXAiOiBbIkBqcmlkZ2V3ZWxsL3NvdXJjZS1tYXBAMC4zLjExIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nIjogIl4wLjMuNSIsICJAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nIjogIl4wLjMuMjUiIH0gfSwgInNoYTUxMi1aTXAxVjhaRmNQRzVkSVduUUxyM05TSTFNaUNVN1VFVGRTL0EwRzhWL1hXSHZKdjNac0ZxdXRKbjFZNVJQbUFQWDZGM0JpRTM5N09xdmVVLzlOQ3VJQT09Il0sCgogICAgIkBqcmlkZ2V3ZWxsL3NvdXJjZW1hcC1jb2RlYyI6IFsiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjQDEuNS41IiwgIiIsIHt9LCAic2hhNTEyLWNZUTkzMTBncnF4dWVXYmwrV3VJVUlhaVVhRGNqN1dPcTVmVmhFbGpOVmdSZk9VaFk5ZnkyelR2Zm9xV3NuZWJoOFNsNzBWU2NGYklDdkpuTEtCME9nPT0iXSwKCiAgICAiQGpyaWRnZXdlbGwvdHJhY2UtbWFwcGluZyI6IFsiQGpyaWRnZXdlbGwvdHJhY2UtbWFwcGluZ0AwLjMuMzEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvcmVzb2x2ZS11cmkiOiAiXjMuMS4wIiwgIkBqcmlkZ2V3ZWxsL3NvdXJjZW1hcC1jb2RlYyI6ICJeMS40LjE0IiB9IH0sICJzaGE1MTItenpOUitTZFFTREp6Yzhqb2FlUDhRUW9DUXI4TnVZeDJkSUl5dGwxUWVCRVpISjl1VzZoZWJzcllnYno4aEp3VVFhbzNUV0NNdG1mVjhOdTF0d09MQXc9PSJdLAoKICAgICJAbmFwaS1ycy93YXNtLXJ1bnRpbWUiOiBbIkBuYXBpLXJzL3dhc20tcnVudGltZUAxLjEuNCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAdHlieXMvd2FzbS11dGlsIjogIl4wLjEwLjEiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAiQGVtbmFwaS9jb3JlIjogIl4xLjcuMSIsICJAZW1uYXBpL3J1bnRpbWUiOiAiXjEuNy4xIiB9IH0sICJzaGE1MTItM05RTk5nQTFZU2xKYi9rTUgxaWxkQVNQOUhXNy83a1luUkkyc3pXSmFvZmFTMWhXbWJHSTRIK2QzKzIyYUd6WFhOOUlKK24rR2lGVmNHaXBKUDE4b3c9PSJdLAoKICAgICJAbmV4dC9lbnYiOiBbIkBuZXh0L2VudkAxNi4yLjYiLCAiIiwge30sICJzaGE1MTItZ2Q4SG9ITjR1Zmo3M1dtUjNKbVZvbHJwSlI0N0lMSzZMb3VQNXhFbFBnbGFWeGlyNmUxYTdWenZUdkRXa09vUFhUOXJra1R6eUN4QnU0eWVaZlp3Y3c9PSJdLAoKICAgICJAbmV4dC9zd2MtZGFyd2luLWFybTY0IjogWyJAbmV4dC9zd2MtZGFyd2luLWFybTY0QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVpKR2trY05mWWdyck1rcU9kWjd6b0xhMVRPeTBxcGNNZmsvejRNaC9GS1V6NDBnVk8rSE5RV3FtTHhmNjdaNVdCNjREUnAwZGhFYnlIZmVsKzZzSlVnPT0iXSwKCiAgICAiQG5leHQvc3djLWRhcndpbi14NjQiOiBbIkBuZXh0L3N3Yy1kYXJ3aW4teDY0QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi12L1lMQkhJWTEzMkNlZDNwdUJKN1lKS3cxbHFzQ3JnY05vMmFSSmxDRXlRcnJDZVJKbHZHbG5teGhQeE5RSTNLRTNOMURONXI5VFBOUHZrYTNucTVSUT09Il0sCgogICAgIkBuZXh0L3N3Yy1saW51eC1hcm02NC1nbnUiOiBbIkBuZXh0L3N3Yy1saW51eC1hcm02NC1nbnVAMTYuMi42IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1SUE92cWxZQmJjUWprejlWUVFEWjJUMmJBUklqWFpWMUtGbHQrVjJNcjZTVy9lNEk5ZmNLc2FBMGhkeWYyRkhvVGxzVjJ4bkJkNVk5MTJyUC8xQ2U2dz09Il0sCgogICAgIkBuZXh0L3N3Yy1saW51eC1hcm02NC1tdXNsIjogWyJAbmV4dC9zd2MtbGludXgtYXJtNjQtbXVzbEAxNi4yLjYiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVVSVVR1MStkTWt4SnNQRmdtK09lRXZxOXdmNXN1ancwRXZnWXk4MFRER0hUU0xUbklIZXFiMEV1OEEzc0M5NUlSZ2plalFMK2tDNG13KzR5UHhpQVhBPT0iXSwKCiAgICAiQG5leHQvc3djLWxpbnV4LXg2NC1nbnUiOiBbIkBuZXh0L3N3Yy1saW51eC14NjQtZ251QDE2LjIuNiIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLURPajE4Mm1QVjhHM1VrcmF5TG9SRU01WUVZSStEazV3djdPeDl4bDFmRmliQUVMRXNGRDBsRFBmSEllSUxsdXRNTWZkeWhsellQRUxHM3BldUthdXJ3PT0iXSwKCiAgICAiQG5leHQvc3djLWxpbnV4LXg2NC1tdXNsIjogWyJAbmV4dC9zd2MtbGludXgteDY0LW11c2xAMTYuMi42IiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSEtRNVNQL1YvdWI3M1V2RjduL3plSmx4azJrTG10TDdXenJnNFdmbWtqbU5vczVvbkoydEt1N3laT1BkTDE4QTZTdmZuM21heDI5eW0rcnk3TmtLNGc9PSJdLAoKICAgICJAbmV4dC9zd2Mtd2luMzItYXJtNjQtbXN2YyI6IFsiQG5leHQvc3djLXdpbjMyLWFybTY0LW1zdmNAMTYuMi42IiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1MWlhwVGxQeVM1djdIaFNtbnZzTEdQM2lJWWdZT0JuYzhyOEFybFQ1NXNHSFY4OWJSMkhsRGRCaldRK1BZNlNKTW1rOFR1VkdGdXhhbG5QM2svMER3Zz09Il0sCgogICAgIkBuZXh0L3N3Yy13aW4zMi14NjQtbXN2YyI6IFsiQG5leHQvc3djLXdpbjMyLXg2NC1tc3ZjQDE2LjIuNiIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLUYwKzRpMGg5SjZDNGVFM0VBUFdzb0NrN1VXL2Riek9qeXp4WTBxbkRVT1lGdTZGRm1kWjZsOTcvWGRWMy9OejNWWXlPN1VXanlFSlVYa0dxY29YZk1BPT0iXSwKCiAgICAiQG94Yy1wcm9qZWN0L3R5cGVzIjogWyJAb3hjLXByb2plY3QvdHlwZXNAMC4xMzAuMCIsICIiLCB7fSwgInNoYTUxMi1pYkQydXN4OUpSdTdmNXB1MnRNS01JNGNwQTROZ1hKUW9ZUlA0cFE3UHhtbjFsNmsvNTNxV3RRV1pheWhZeTNYNFFaa3Q5ME90K21KRWFlWG91aW82UT09Il0sCgogICAgIkBwbGF5d3JpZ2h0L3Rlc3QiOiBbIkBwbGF5d3JpZ2h0L3Rlc3RAMS42MC4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInBsYXl3cmlnaHQiOiAiMS42MC4wIiB9LCAiYmluIjogeyAicGxheXdyaWdodCI6ICJjbGkuanMiIH0gfSwgInNoYTUxMi1PNzF5WkliQWgvUHhETU5HbnMzN0dIQklmclZrRVZ5bitBWHlJYTVkT1RmYjQveE52UldWK1Z2L05NYk5DdE9EQi9wTzd2TGxGMk9UbU1WTGhtcjdBZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWFuZHJvaWQtYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLWFuZHJvaWQtYXJtNjRAMS4wLjEiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItZkpJM0kwcjNDM09qL3pkQkNwYUNtQlJaWWYwN3hwYXE0eUNmRERvU0ZtK2JlV056YklsMjZwdVc4UnJhVWR1Z29Kdy85NXplck5PbjZqYXNBaHpTbWc9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1kYXJ3aW4tYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLWRhcndpbi1hcm02NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLWNLbkFoV0VzVjdUUGNBLzVFQXRlRHA2S2NKWkJRMkcrQnFFN3pheU1NaTdrTXZ3UnNidjdXVDlhT25uMFdObDRTS0VJZjQzdmpTMzFpVVB1ODBuelhnPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NCI6IFsiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLXg2NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1ZS3JWd1FqSVJCUG8rNUcvdTAzd0dqYmR5NHE3cHl6Q2U5M0RLOVZKN3prVm1lZzhMSjdHYmdzaUhXZFI0eFNvZTRDQVhSRDdCY2pnYnRyNjRia1hOZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWZyZWVic2QteDY0IjogWyJAcm9sbGRvd24vYmluZGluZy1mcmVlYnNkLXg2NEAxLjAuMSIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItei9vQnNSRW80NlNzRnFCd1l0RmUwa3BKZUJpakFUNDhPL1dYTEk0c3VpQ0xCa3IwM1JUdFRKTUN6U2REZDJ6bmxoOFZKaXpMMDlYVmtRZ2s4SVpvbnc9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm0tZ251ZWFiaWhmQDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItaWs4cTdHTTExenh2WXhGYzJQZURjVDZUQnZoQ1FNYVV4ZnBoL001bDlzS3VUcy9TamczTCtCeXcwRjd3MFpWTEJabXgzMFArZ0cwRUN6ek4rTUZjbVE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1nbnUiOiBbIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LWFybTY0LWdudUAxLjAuMSIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItUW9TeDJFa3lycmRaNmtjeUU4c3RxWjYydDBZcmE4RnM1aWE5bE94SnJoNlRNUUpLN2dRS21zY2RUSGY3cE9YS1JFS3JWd090SmNRRzNxVlNmYzg2NkE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1tdXNsQDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi11d053RnB3S2VOaVphd2ZBV0JnZzBWSXp0UFRWM2loaGgxdlYzMzRoOWl2bk5Mb3J4blFNVTZGejh3RzFaYjRRaDlMQzEvTWtjeVQzWWxEWEczUnNnZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXBwYzY0LWdudSI6IFsiQHJvbGxkb3duL2JpbmRpbmctbGludXgtcHBjNjQtZ251QDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJwcGM2NCIgfSwgInNoYTUxMi16WTFidWw3T1dyN0RGQmlKKyt3b2ZYdm5yOEI0NWNlM1FzUVVoS3JJaFhzeWdBaDdiVGt3eWVNMWJpMWEyZzVDL3lDL044VFp5R0RFb01mbS9sOW1wZz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXMzOTB4LWdudSI6IFsiQHJvbGxkb3duL2JpbmRpbmctbGludXgtczM5MHgtZ251QDEuMC4xIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJzMzkweCIgfSwgInNoYTUxMi0wZnJsc1QvZjRGdDZJN1NNRVNUS25GM2Nac2RpY1FuMWRDTWtGL2pUOXdETEUrZ0dvaVFmdjFubVQ5ZStzN3MvZmVrdnZ5NnRaTTJqSHZJMnRrYkpEUT09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1nbnUiOiBbIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1nbnVAMS4wLjEiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1YQUJWbUdwOVRnMFdzcFRWdndkdVRjNGZwcXk2Sm5BVXJTUWU2T3V5cUQvMDNuSTdyME85T1dVa01Jd0ZyaktBSXFvbHZxb0E0WnJKcHBnd0UwR3htdz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1tdXNsIjogWyJAcm9sbGRvd24vYmluZGluZy1saW51eC14NjQtbXVzbEAxLjAuMSIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLWJWNGZ6c3d1elZjS0Q5MG8vVk02UXFLeG54bERxMGcyQklTRExOVm14cm5ocHYxRERieVBoQ0lqWWZ2ellMVitNdmtLS25RdDJRNkFPODZTRUJVTFVRPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctb3Blbmhhcm1vbnktYXJtNjQiOiBbIkByb2xsZG93bi9iaW5kaW5nLW9wZW5oYXJtb255LWFybTY0QDEuMC4xIiwgIiIsIHsgIm9zIjogIm5vbmUiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLS9NaDBaaHEzT1A3ZlZzMGtjUUhaUDZsWkV0aE1HVGFTZjhVQlFZU0ZFWkRXR1hYbEVDK25KNkVxZW5hSzJ0NExCWE1lM0ErSy9HMkJWWFhkdE9yNFBRPT0iXSwKCiAgICAiQHJvbGxkb3duL2JpbmRpbmctd2FzbTMyLXdhc2kiOiBbIkByb2xsZG93bi9iaW5kaW5nLXdhc20zMi13YXNpQDEuMC4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBlbW5hcGkvY29yZSI6ICIxLjEwLjAiLCAiQGVtbmFwaS9ydW50aW1lIjogIjEuMTAuMCIsICJAbmFwaS1ycy93YXNtLXJ1bnRpbWUiOiAiXjEuMS40IiB9LCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItKzF4YzlYNDVsOHVmc0JBbTZHanZ4MnFEUklZOWxUVnQwY2dXTmNKKzFnZGhYdmtieGVQQTYweVJUd1NUdVhMMDlDTWh5Sm1qcFY3RTNOb3l4YnFGUVE9PSJdLAoKICAgICJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjIjogWyJAcm9sbGRvd24vYmluZGluZy13aW4zMi1hcm02NC1tc3ZjQDEuMC4xIiwgIiIsIHsgIm9zIjogIndpbjMyIiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi0xRCtVcVpkZm51UitKeTFHZ01Kd2k4NWJENDBIMjF1Tm1PUFJXUWh3NG9SU3VvbFovQjVyaXhaNDVESzJLWE9UQ3ZtVkNlY2F1V2dFaGJ3OGJJN3RPdz09Il0sCgogICAgIkByb2xsZG93bi9iaW5kaW5nLXdpbjMyLXg2NC1tc3ZjIjogWyJAcm9sbGRvd24vYmluZGluZy13aW4zMi14NjQtbXN2Y0AxLjAuMSIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLUlOQXljYVd1aGxPSzN3azRtUkhHc2Rnd1lXbWQ5Y0NoZFBkRTlid1dteTZybjlWcVZOWU5GR2hPZFhyb2ZYVXh3SEluY1NpUE5iOHRObThrbkRWSWVRPT0iXSwKCiAgICAiQHJvbGxkb3duL3BsdWdpbnV0aWxzIjogWyJAcm9sbGRvd24vcGx1Z2ludXRpbHNAMS4wLjEiLCAiIiwge30sICJzaGE1MTItMmo5Ykd0NUpoOGhqK3ZQdGd6UHRsNzJqMHlSeEhBeXVtb282VE5mQWpzTEIwNFV0cFN2UGJQY0RjQk14ejduKzlDWUIwYzFHeFFGeFlSZzJqaW1xR3c9PSJdLAoKICAgICJAc3RhbmRhcmQtc2NoZW1hL3NwZWMiOiBbIkBzdGFuZGFyZC1zY2hlbWEvc3BlY0AxLjEuMCIsICIiLCB7fSwgInNoYTUxMi1sMmFGeTVqQUxobmlHNUhncXJENmpYTGkvclVXckt2cU4vcUp4NnlvSnNnS2hibFZkK2lxcVU0UkNYYXZtL2pQaXR5RG81VEN2S01ucGpLbk9yaXkwdz09Il0sCgogICAgIkBzd2MvaGVscGVycyI6IFsiQHN3Yy9oZWxwZXJzQDAuNS4xNSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi44LjAiIH0gfSwgInNoYTUxMi1KUTVUdU1pNDVPd2k0L0JJTUFKQm9TUW9PSnUxMm9Pay9nQURxbGNVTDlKRWRIQjh2eWpVU3N4cWVOWG5tWEhqWUtNaTJXY1l0ZXpHRUVocVVJL0UyZz09Il0sCgogICAgIkB0YWJieV9haS9oaWpyaS1jb252ZXJ0ZXIiOiBbIkB0YWJieV9haS9oaWpyaS1jb252ZXJ0ZXJAMS4wLjUiLCAiIiwge30sICJzaGE1MTItcjViQ2xLcmNJdXNEb28wNDlkU0w4Q2F3bkhSNm1SZER3aGxRdUlnWlJOdHk2OHEweDhrM0xmMUJ0UEFNeFJmL0dnbkhCbklPNHVqZDMrR1FkTFd6eFE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvbm9kZSI6IFsiQHRhaWx3aW5kY3NzL25vZGVANC4zLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvcmVtYXBwaW5nIjogIl4yLjMuNSIsICJlbmhhbmNlZC1yZXNvbHZlIjogIl41LjIxLjAiLCAiaml0aSI6ICJeMi42LjEiLCAibGlnaHRuaW5nY3NzIjogIjEuMzIuMCIsICJtYWdpYy1zdHJpbmciOiAiXjAuMzAuMjEiLCAic291cmNlLW1hcC1qcyI6ICJeMS4yLjEiLCAidGFpbHdpbmRjc3MiOiAiNC4zLjAiIH0gfSwgInNoYTUxMi1hRmI0Z1VoRk9nZGg5QVhvNEl6QkVPekJra0F4bTlWaWd3REpuTUlZdjNsY2ZYQ0pWZXNOZmJFYUJsNEJOZ1ZSeWlkOTJBbWR2aXF3QlVCUktTZVkzZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZSI6IFsiQHRhaWx3aW5kY3NzL294aWRlQDQuMy4wIiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQHRhaWx3aW5kY3NzL294aWRlLWFuZHJvaWQtYXJtNjQiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtZGFyd2luLXg2NCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtZnJlZWJzZC14NjQiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybS1nbnVlYWJpaGYiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybTY0LWdudSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtbXVzbCI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LWdudSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LW11c2wiOiAiNC4zLjAiLCAiQHRhaWx3aW5kY3NzL294aWRlLXdhc20zMi13YXNpIjogIjQuMy4wIiwgIkB0YWlsd2luZGNzcy9veGlkZS13aW4zMi1hcm02NC1tc3ZjIjogIjQuMy4wIiwgIkB0YWlsd2luZGNzcy9veGlkZS13aW4zMi14NjQtbXN2YyI6ICI0LjMuMCIgfSB9LCAic2hhNTEyLUY3SFpHQmVOOUkwL0F1dUpTNVB3Y0Q4eGF5eDVyaTVHaGpZVURCRVZZVWtleHlBL2dpd2JETmpSVnJ4U2V6RTNUMjUwT1UySy93cC9sdFd4M1VPZWZnPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWFuZHJvaWQtYXJtNjQiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1hbmRyb2lkLWFybTY0QDQuMy4wIiwgIiIsIHsgIm9zIjogImFuZHJvaWQiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVRKUGlxNjd0S2xMdU9iUDZSa3d2VkdEb3hDTUJWdERnS2tMZmEvdXlqNy9GeXh2UXdIUytVT25WclhYZ2JFc2ZVYU1naVZ2QzRLYkpuUnIyNmhvNE5nPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NCI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi1hcm02NEA0LjMuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLW9NTi9XWlJiK1NPMzdCbVVFbEVnZUVXdVU4RS9IWFJraU9EeEp4TGUxVVRIVlhMcmRWU2dmYUpWN3BTbGhSR01TT2lYTHV4VElqZnNGM3dZdno4Y2dRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWRhcndpbi14NjQiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1kYXJ3aW4teDY0QDQuMy4wIiwgIiIsIHsgIm9zIjogImRhcndpbiIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLU42Q1VtdTRhNmJLVkFEZnc3N3AraXc2WWQ5UTNPQmhlMHZlYURYK1FhemZ1VllsUXNIZkRneEJyc2pRL0lXK3p5d0w4bVRyTmQwU2RKVC96Z3R2TWRBPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWZyZWVic2QteDY0IjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtZnJlZWJzZC14NjRANC4zLjAiLCAiIiwgeyAib3MiOiAiZnJlZWJzZCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLXpETDVoQmtRZEg1QzZNcHFiSzNnUUFnUDgwdHNNd1NJMjZ2ak96akp0TkNNVW8wbEZnT0l0ekhLQkl1cE9aTlF4dDNvdVBIN1JQaHZOaGlUZkNlNUNRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LWFybS1nbnVlYWJpaGYiOiBbIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC1hcm0tZ251ZWFiaWhmQDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTItUjA2SGROaTdBN09Fb01zZjZkNHRqWjcxUkNXblpRUEhqMm1ub3RTRlVSak5MZEJDK2NJZ1hRN2w4MUNxZW9pUWZ0amY2T09ibHhYTUluTWdOMlZ6TUE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtZ251IjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtZ251QDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1xVEpIRUxYOGpldGpoUlFIQ0xpbGtWTG15YnB6TlFBdGFJL2dhb1ZvaWRuL3VmYk5EYkFvOEtsSzJKK3lQb2M4d1F4dkR4Q21oLzVscjhuQzErbFRiZz09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC1hcm02NC1tdXNsIjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgtYXJtNjQtbXVzbEA0LjMuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItWjZzdWtpUXNuZ25XTytsMzlYNHBQYmlXVDgxSUMrUExLRitQSHhJbHlaYkdOYjlNT0RmWWxYRVZsRnZlajVCT1pJbldYMDFrVnl6ZUx2SHNYaGZjelE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtbGludXgteDY0LWdudSI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LXg2NC1nbnVANC4zLjAiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1EUk5kUVJwU0d6UkdmQVJWdVZreHZNOFExMm5oMTlsNEJGL0c3ekdBMW9lKzl3Y0M2c2FGQkhUSVNycEljS3poaVh0U3JsU3JsdUNmdk11bGVkb0NUUT09Il0sCgogICAgIkB0YWlsd2luZGNzcy9veGlkZS1saW51eC14NjQtbXVzbCI6IFsiQHRhaWx3aW5kY3NzL294aWRlLWxpbnV4LXg2NC1tdXNsQDQuMy4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItWjBJQURiRG84Ymg2STdoMklRTXg2MDFBZFhCTGZGcEVkVW90ZnQ4NmV2ZC84WlBmbFplOUNPUE84UTF2dytwZkxXSVVvOXpOL0pHWnZ3dUFKcWR1cWc9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kiOiBbIkB0YWlsd2luZGNzcy9veGlkZS13YXNtMzItd2FzaUA0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAZW1uYXBpL2NvcmUiOiAiXjEuMTAuMCIsICJAZW1uYXBpL3J1bnRpbWUiOiAiXjEuMTAuMCIsICJAZW1uYXBpL3dhc2ktdGhyZWFkcyI6ICJeMS4yLjEiLCAiQG5hcGktcnMvd2FzbS1ydW50aW1lIjogIl4xLjEuNCIsICJAdHlieXMvd2FzbS11dGlsIjogIl4wLjEwLjEiLCAidHNsaWIiOiAiXjIuOC4xIiB9LCAiY3B1IjogIm5vbmUiIH0sICJzaGE1MTItSE5aR09VeEVtRWxrc1lSN1M2c0M1alRlTkdwb2JBc3k5dTdHdTBBc2tKOC8yMEZSOUdxZWJVeUIrSEJjVS9heDZCSHVpdUppK09kYTRCK1lYNkgxeUE9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2luMzItYXJtNjQtbXN2YyI6IFsiQHRhaWx3aW5kY3NzL294aWRlLXdpbjMyLWFybTY0LW1zdmNANC4zLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVBlK1JQVlRpMVQrcXltdXVScGNkdndTVlpqbmxsL2Y3bjhnQnhNTWgzeExUY3RNREtxcGRmR2ltYk15aW9xdExoVVlaeGRKOXdHTmhWN01LSHZnWnNRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLXdpbjMyLXg2NC1tc3ZjIjogWyJAdGFpbHdpbmRjc3Mvb3hpZGUtd2luMzIteDY0LW1zdmNANC4zLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1NdnJmMmtYVy95ZVcvT1RlelpsQ0dPaXJYUmNVdUxJQngvNVkxMkJhUE03d0pvcnlHNmRmUy9OSkw4YUJQcXRURXgvVm00VDR2S3pGVWNLRFQrVEtVQT09Il0sCgogICAgIkB0YWlsd2luZGNzcy9wb3N0Y3NzIjogWyJAdGFpbHdpbmRjc3MvcG9zdGNzc0A0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAYWxsb2MvcXVpY2stbHJ1IjogIl41LjIuMCIsICJAdGFpbHdpbmRjc3Mvbm9kZSI6ICI0LjMuMCIsICJAdGFpbHdpbmRjc3Mvb3hpZGUiOiAiNC4zLjAiLCAicG9zdGNzcyI6ICJeOC41LjEwIiwgInRhaWx3aW5kY3NzIjogIjQuMy4wIiB9IH0sICJzaGE1MTItSm0wNVRqeCs5eUNMR3Y1cXcxYys4NFBzZHM4TW55ckVRWUNCK0ZGazJsZ0dpVWpsUnFkeGtlNG1WVHVZcmoyeG5WWnFLaW0yQXByNXlTdVFSWUF3L3c9PSJdLAoKICAgICJAdHlieXMvd2FzbS11dGlsIjogWyJAdHlieXMvd2FzbS11dGlsQDAuMTAuMiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi40LjAiIH0gfSwgInNoYTUxMi1Sb0J2SjJYMHd1S2xXRklqcndmZkd3MUlxWkhLUXF6SWNoS2FhZFpaZm5OcHNBWXAybU0waDM2SnRQQ2pOREFIR2dZZXovMTV1TUJwZkd3Y2hoaU1nZz09Il0sCgogICAgIkB0eXBlcy9jaGFpIjogWyJAdHlwZXMvY2hhaUA1LjIuMyIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAdHlwZXMvZGVlcC1lcWwiOiAiKiIsICJhc3NlcnRpb24tZXJyb3IiOiAiXjIuMC4xIiB9IH0sICJzaGE1MTItTXc1NThvZUE5ZkZidjY1L3k0bUh0WERzOWJQbkZNWkFML2p4ZFBGVXBPSEhJWFg5MW1jZ0VIYlM1TGFocitwd1pGUjhBN0dRbGVSV2VJNmNHRkMyVUE9PSJdLAoKICAgICJAdHlwZXMvZGVlcC1lcWwiOiBbIkB0eXBlcy9kZWVwLWVxbEA0LjAuMiIsICIiLCB7fSwgInNoYTUxMi1jOWg5ZFZWTWlnTVBjNGJ3VHZDNWR4cXRxSlp3UVBlUHNXalBscFNPbm9qYm9yNnBHcWRrNTQxbGZBN0FxRlFyNXBCMUJSZHEwanVZOWRiODFCd3lGdz09Il0sCgogICAgIkB0eXBlcy9lc3RyZWUiOiBbIkB0eXBlcy9lc3RyZWVAMS4wLjkiLCAiIiwge30sICJzaGE1MTItR2hkUGd5MWVsNC9JbVAwNVgwNVV3NGN3Mi9NOTNCQ1VtbkV2V1pOU3RsQ3pFS01FNEZraytZcG9BNU9pSE5RbW9TN0NhZmI4WGEzUHlhOG0xUXJ6ZWc9PSJdLAoKICAgICJAdHlwZXMvbm9kZSI6IFsiQHR5cGVzL25vZGVAMjIuMTkuMTkiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAidW5kaWNpLXR5cGVzIjogIn42LjIxLjAiIH0gfSwgInNoYTUxMi1keWgveE8yRmg1YllyZldhYXFHclJRUUdrTmRtWXc2QW1hQVV2WWVVTU5UV1F0dmI3OTZpa0xkbVRjaFJtT2xPaUlKMVREWGZXZ1Z4MVFrVWxRNkhldz09Il0sCgogICAgIkB0eXBlcy9yZWFjdCI6IFsiQHR5cGVzL3JlYWN0QDE5LjIuMTUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiY3NzdHlwZSI6ICJeMy4yLjIiIH0gfSwgInNoYTUxMi1lUndjR05IdmUrRThxdEVRU1NSbDZ1cmgrckZvcDR2OGdtNk84ckd2MjVDb2RidkZkTGpBMXZWUTFLa2lGRTB3MFVQT25iOHREaUZLTDVscDBydFk1UT09Il0sCgogICAgIkB0eXBlcy9yZWFjdC1kb20iOiBbIkB0eXBlcy9yZWFjdC1kb21AMTkuMi4zIiwgIiIsIHsgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJAdHlwZXMvcmVhY3QiOiAiXjE5LjIuMCIgfSB9LCAic2hhNTEyLWpwMkwvZVk2Zm4rS2dWVlFBT3FZSXRiRjBWWS9ZQXBlNU16MkYwYXlrU084Z3gzMWJZQ1p5dlNlWXhDSEt2ekhHNWVaamMrenlhUzVCckJXeWEyK2tRPT0iXSwKCiAgICAiQHZpdGVzdC9leHBlY3QiOiBbIkB2aXRlc3QvZXhwZWN0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBzdGFuZGFyZC1zY2hlbWEvc3BlYyI6ICJeMS4xLjAiLCAiQHR5cGVzL2NoYWkiOiAiXjUuMi4yIiwgIkB2aXRlc3Qvc3B5IjogIjQuMS42IiwgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAiY2hhaSI6ICJeNi4yLjIiLCAidGlueXJhaW5ib3ciOiAiXjMuMS4wIiB9IH0sICJzaGE1MTItN0VIRHF1UHRoQUxTVjBqaGhqZ0VXOEZYYXZpTXg3clNxdThXNm9xQ29BdU9oS292ODE0UDk5UURWMXB4TUEzUVB2MjFZdWR2Sm5nSWhqck5JNG9wTGc9PSJdLAoKICAgICJAdml0ZXN0L21vY2tlciI6IFsiQHZpdGVzdC9tb2NrZXJANC4xLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHZpdGVzdC9zcHkiOiAiNC4xLjYiLCAiZXN0cmVlLXdhbGtlciI6ICJeMy4wLjMiLCAibWFnaWMtc3RyaW5nIjogIl4wLjMwLjIxIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIm1zdyI6ICJeMi40LjkiLCAidml0ZSI6ICJeNi4wLjAgfHwgXjcuMC4wIHx8IF44LjAuMCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbIm1zdyIsICJ2aXRlIl0gfSwgInNoYTUxMi1NQ0ZjNjNjek1qRUluT2xjWTJjcFFDdkNOK0tnYkFuKzYweHU5Y01nUDRzS2FMQzVKTkFLdzdKSDhRZEFub0FDODhoVzFJaVNOWitHZ1ZYbE4xVWNNUT09Il0sCgogICAgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6IFsiQHZpdGVzdC9wcmV0dHktZm9ybWF0QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRpbnlyYWluYm93IjogIl4zLjEuMCIgfSB9LCAic2hhNTEyLWg1U3hEL0l6TmhaWW5yU1pSc1VaUUlDK3ZEMEdZOGNVdnEwaXdzbWtGS2l4UkNLTExXcUNYYS9GSVE0UzFSK3NJK1BHb29qa0hzZE5yYlppTTlRcGd3PT0iXSwKCiAgICAiQHZpdGVzdC9ydW5uZXIiOiBbIkB2aXRlc3QvcnVubmVyQDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvdXRpbHMiOiAiNC4xLjYiLCAicGF0aGUiOiAiXjIuMC4zIiB9IH0sICJzaGE1MTItbk9QQ21uMit5RDBaTm1LZHNYR3YvVXhNTVdiTXVLZUQ2R3lZbmNOd2RrWUR4cFF2clBTS1lqMnJXdURqQzJZNGI2dzZoamlwNWRCS0Z6RVV1WmUzdkE9PSJdLAoKICAgICJAdml0ZXN0L3NuYXBzaG90IjogWyJAdml0ZXN0L3NuYXBzaG90QDQuMS42IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB2aXRlc3QvcHJldHR5LWZvcm1hdCI6ICI0LjEuNiIsICJAdml0ZXN0L3V0aWxzIjogIjQuMS42IiwgIm1hZ2ljLXN0cmluZyI6ICJeMC4zMC4yMSIsICJwYXRoZSI6ICJeMi4wLjMiIH0gfSwgInNoYTUxMi1ZaHNkRTZ4QVZmVERtemp4TDJaRFV2amorWnNneU9LZStUZFF6cWtENzJ3SU9tSGthOE51R1E2TnBUTlp2OUQyWjYzZmJ3V0tKUGVWcEV3NEVRZ1l4dz09Il0sCgogICAgIkB2aXRlc3Qvc3B5IjogWyJAdml0ZXN0L3NweUA0LjEuNiIsICIiLCB7fSwgInNoYTUxMi1KRkt4TXg2dWRod0toL0xkbzI3MGUxN1FYNzEwdmd1bk1rdVBBdlhqSFN2QzZvcUxXQUhoVmhqZy9JNzFxMHUwQ0JTRXJJT0RWMUtqdjBGUU5TV2pkZz09Il0sCgogICAgIkB2aXRlc3QvdXRpbHMiOiBbIkB2aXRlc3QvdXRpbHNANC4xLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHZpdGVzdC9wcmV0dHktZm9ybWF0IjogIjQuMS42IiwgImNvbnZlcnQtc291cmNlLW1hcCI6ICJeMi4wLjAiLCAidGlueXJhaW5ib3ciOiAiXjMuMS4wIiB9IH0sICJzaGE1MTItRnhJWStVODFSM0xHS0N4YUhIRlJRNStnNi9pUmdHTG1lSFdkcDJBbWo0bGpRUnJFSVdIbVp5RGZEWUJSWmxweXFBN3FLeHRTOUREMWRoazhSblJJVlE9PSJdLAoKICAgICJhY29ybiI6IFsiYWNvcm5AOC4xNi4wIiwgIiIsIHsgImJpbiI6IHsgImFjb3JuIjogImJpbi9hY29ybiIgfSB9LCAic2hhNTEyLVVWSnlFOU10dE9zQlFJREt3MXNrYjluQXdRdVI1d3VHRDMrODJLNkpnSmxtL1krS0k5Mm9Oc01OR1pDWWREc1Z0UkhTYWswcGNWNURubzUrNGpoOXN3PT0iXSwKCiAgICAiYW5zaS1yZWdleCI6IFsiYW5zaS1yZWdleEA1LjAuMSIsICIiLCB7fSwgInNoYTUxMi1xdUpRWGxUU1VHTDJMSDlTVVhvOFZ3c1k0c29hbmhnbzZMTlNtODRFMUxCY0U4czNPMHdwZGlSenlSOXovWlpKTWxNV3YzN3FPT2I5cGRKbE1VRUtGUT09Il0sCgogICAgImFuc2ktc3R5bGVzIjogWyJhbnNpLXN0eWxlc0A0LjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjb2xvci1jb252ZXJ0IjogIl4yLjAuMSIgfSB9LCAic2hhNTEyLXpiQjlyQ0pBVDFyYmppVkRiMmhxS0ZITllMeGd0azhOVVJ4WjNJWndEM0Y2TnR4YlhaUUNublNpMUxreCtJRG9oZFBsRnAyMjJ3VkFMSWhlWkpRU0VnPT0iXSwKCiAgICAiYXNzZXJ0aW9uLWVycm9yIjogWyJhc3NlcnRpb24tZXJyb3JAMi4wLjEiLCAiIiwge30sICJzaGE1MTItSXppOFJRY2ZmcUNlTlZnRmlnS2xpMXNza2xJYnBIbkNZYzZBa25YR1lvQjZnckpxeWVieTdqdjEySlVRZ21UQW5JRG5iY2sxdXhrc1Q0ZHpOM1BXQkE9PSJdLAoKICAgICJiYXNlbGluZS1icm93c2VyLW1hcHBpbmciOiBbImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZ0AyLjEwLjMxIiwgIiIsIHsgImJpbiI6IHsgImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZyI6ICJkaXN0L2NsaS5janMiIH0gfSwgInNoYTUxMi1NdWpZTzNlUDcydXZtU0UwaTR3bHRzb2RSZklwWkFUUDNqdnpSTlJHR3hneklkN2FWb2NWSkpWM25mMDFxbnp6S0ZHeFFWQzlicFd4bDVjanhUci83UT09Il0sCgogICAgImJ1ZmZlci1mcm9tIjogWyJidWZmZXItZnJvbUAxLjEuMiIsICIiLCB7fSwgInNoYTUxMi1FK1hRQ1J3U2JhYWlDaHR2Nms2RHdnYytieCtCczZ2dUtKSEhsNWtveC9CYUtiaGlYenFRT3dLNGNPMjJ5RWxHcDJPQ21qd1ZoVDNIbXhneVBHbkpmUT09Il0sCgogICAgImNhbml1c2UtbGl0ZSI6IFsiY2FuaXVzZS1saXRlQDEuMC4zMDAwMTc5MyIsICIiLCB7fSwgInNoYTUxMi1pd1NzWVdhQ09vaDI2Y1Y4TndOUlZpSGxyZlV2WXNIRGZSVmNidG13MEtnNlBKSVpaWHdNa2oxNDQyRllMQkdrZVVmMWp1QXNVM0RUZnhXNTc5bXJQQT09Il0sCgogICAgImNoYWkiOiBbImNoYWlANi4yLjIiLCAiIiwge30sICJzaGE1MTItTlVQUmx1T2ZPaVRLQkt2V1B0U0Q0UGhGdldDcU9pMEJHU3ROV3M1N1g5anM3WEdUcHJTbUZvejVGMHRXaFI0V1BqTmVSOWpYcWRDNy9VcFNKVG5sUmc9PSJdLAoKICAgICJjaGFsayI6IFsiY2hhbGtANC4xLjIiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiYW5zaS1zdHlsZXMiOiAiXjQuMS4wIiwgInN1cHBvcnRzLWNvbG9yIjogIl43LjEuMCIgfSB9LCAic2hhNTEyLW9LbmJoRnlSSVhwVXVlejhpQk1teUVhNG5iajRJT1F5dWhjL3d5OWtZNy9XVlBjd0lPOVZBNjY4UHU4UmtPNyswRzc2U0xST2V5dzlDcFEwNjFpNG1BPT0iXSwKCiAgICAiY2xpZW50LW9ubHkiOiBbImNsaWVudC1vbmx5QDAuMC4xIiwgIiIsIHt9LCAic2hhNTEyLUlWM091MGpTTXpacmQzcFo0OG5Ma1Q5REE3QWcxcG5QemFpUWhwVzdjM1JiY3FxenZ6elZ1K0w4Z2ZxTXAvOElNMk1RdFNpcWFDeHJyY2Z1OEk4ck1BPT0iXSwKCiAgICAiY2xpdWkiOiBbImNsaXVpQDguMC4xIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInN0cmluZy13aWR0aCI6ICJeNC4yLjAiLCAic3RyaXAtYW5zaSI6ICJeNi4wLjEiLCAid3JhcC1hbnNpIjogIl43LjAuMCIgfSB9LCAic2hhNTEyLUJTZU5ueXVzNzVDNC8vTlE5Z1F0MS9jc1RYeW8vOFNiK2FmTEFrekFwdEZ1TXNvZDlIRm9rR051ZFpwaS9vUVY3M2huVksrc1IrNVBWUk1kK0RyN1lRPT0iXSwKCiAgICAiY2xzeCI6IFsiY2xzeEAyLjEuMSIsICIiLCB7fSwgInNoYTUxMi1lWW0wUVdCdFVyQldaV0cwZDM4Nk9HQXcxNlo5OTVQaU9WbzJCN2JqV1NiSGVkR2w1ZTBaV2FxNjVrT0dnVVNOZXNFSURrQjlJU2JUZy9KSzlkaENaQT09Il0sCgogICAgImNvbG9yLWNvbnZlcnQiOiBbImNvbG9yLWNvbnZlcnRAMi4wLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiY29sb3ItbmFtZSI6ICJ+MS4xLjQiIH0gfSwgInNoYTUxMi1SUkVDUHNqN2l1L3hiNW9LWWNzRkhTcHBGTm5zai81Mk9WVFJLYjR6UDVvblh3VkYzelZtbVRvTmNPZkdDK0NSRHBmSy9VNTg0Zk1nMzhaSENhRWxLUT09Il0sCgogICAgImNvbG9yLW5hbWUiOiBbImNvbG9yLW5hbWVAMS4xLjQiLCAiIiwge30sICJzaGE1MTItZE95KzNBdVczYTJ3TmJaSEl1TVpwVGNnakd1TFUvdUJML3ViY1pGOU9YYkRvOGZmNE84eVZwNUJmMGVmUzh1RW9ZbzVxNEZ4N2RZOU9nUUdYZ0FzUUE9PSJdLAoKICAgICJjb21tYW5kZXIiOiBbImNvbW1hbmRlckAyLjIwLjMiLCAiIiwge30sICJzaGE1MTItR3BWa21NOHZGMnZRVWtqMkx2Wm1EMzVKeGVKT0xDd0o5Y1VrdWd5azJudWhidjMrbUp2cExZWXQrMCtVU014RStvaitleS9sSkVuaFp3NzV4L09NY1E9PSJdLAoKICAgICJjb25jdXJyZW50bHkiOiBbImNvbmN1cnJlbnRseUA5LjIuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjaGFsayI6ICI0LjEuMiIsICJyeGpzIjogIjcuOC4yIiwgInNoZWxsLXF1b3RlIjogIjEuOC4zIiwgInN1cHBvcnRzLWNvbG9yIjogIjguMS4xIiwgInRyZWUta2lsbCI6ICIxLjIuMiIsICJ5YXJncyI6ICIxNy43LjIiIH0sICJiaW4iOiB7ICJjb25jIjogImRpc3QvYmluL2NvbmN1cnJlbnRseS5qcyIsICJjb25jdXJyZW50bHkiOiAiZGlzdC9iaW4vY29uY3VycmVudGx5LmpzIiB9IH0sICJzaGE1MTItZnNmck8wTXhWNjRabm95OC9sMXZWSWpqSGEyOVNaeXlxUGdRQndoaURjYVc4d0pjMlczWFdWT0d4NE0zb0pCbnYvemRVWklJcDFnRGVTOThHelA4Tmc9PSJdLAoKICAgICJjb252ZXJ0LXNvdXJjZS1tYXAiOiBbImNvbnZlcnQtc291cmNlLW1hcEAyLjAuMCIsICIiLCB7fSwgInNoYTUxMi1LdnA0NTlIclYyRkVKMUNBc2kxS3UrTVkza2FzSDE5VEZ5a1R6MnhXbU1lcTZiazJOVTNYWHZmSitRNjFtMHhrdFd3dCsxSFNZZjNKWnNUbXMzYVJKZz09Il0sCgogICAgImNzc3R5cGUiOiBbImNzc3R5cGVAMy4yLjMiLCAiIiwge30sICJzaGE1MTItejFIR0tjWXkyeEE4QUdRZndybjBQQXkrUEI3WC9HU2ozVVZKVzlxS3luNDN4V2ErZ2w1blhtVTRxcUxNUnpXVkxGQzhLdXNVWDhULzBrQ2lPWXBBSVE9PSJdLAoKICAgICJkYXRlLWZucyI6IFsiZGF0ZS1mbnNANC4yLjEiLCAiIiwge30sICJzaGE1MTItMzdSaFNkeGFHMXN1ZW42VkRDemE2ck5yUWZvb3lRaDU3SEZWUHdRR0VxMlFXbGlWTHpQUVo4T2EwMTd3ZU91K0haQ256STdOM1BmL3d5b0JLZkVxckE9PSJdLAoKICAgICJkYXRlLWZucy1qYWxhbGkiOiBbImRhdGUtZm5zLWphbGFsaUA0LjEuMC0wIiwgIiIsIHt9LCAic2hhNTEyLWhUSVAveit0K3FLd0JEY21tc25taldUZHV4Q2crNUtmZHFXUXZiMlgvOEM5K2tuWVk2ZXBOL3BmeGREdXlWbFNWZUZ6MHNNNWVFZndJVVE3MFU0Y2tnPT0iXSwKCiAgICAiZGV0ZWN0LWxpYmMiOiBbImRldGVjdC1saWJjQDIuMS4yIiwgIiIsIHt9LCAic2hhNTEyLUJ0ajJCT09PODNvM1d5SDU5ZThNZ1hzeEVRVmNhcmtVT3BFWXJ1YkIwdXJ3bk4xMHlRMzY0cnNpQnlVMTFuWmxxV1labTA1aS9vZjdpbzRtemloQnRRPT0iXSwKCiAgICAiZW1vamktcmVnZXgiOiBbImVtb2ppLXJlZ2V4QDguMC4wIiwgIiIsIHt9LCAic2hhNTEyLU1Tall6Y1dOT0EwZXdBSHB6ME14cFlGdndnNnlqeTFORzN4dGVvcXo2NDRWQ28vUlBnbnIxL0dHdCtpYzNpSlR6UThFdTNUZE0xNFNhd25WVW1HRTZBPT0iXSwKCiAgICAiZW5oYW5jZWQtcmVzb2x2ZSI6IFsiZW5oYW5jZWQtcmVzb2x2ZUA1LjIxLjUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiZ3JhY2VmdWwtZnMiOiAiXjQuMi40IiwgInRhcGFibGUiOiAiXjIuMy4zIiB9IH0sICJzaGE1MTItbUxDTmJyUWxpMTFLMXlTVW11TnQ0WlVCM09wR0lEcTRxMnZUQlRmNWNMMmxwc1JqSTlRS3FTRDBuZGpXOEZ5dmNXL0pqNDZnTWU5c3l5SEFzdk1hL0E9PSJdLAoKICAgICJlcy1tb2R1bGUtbGV4ZXIiOiBbImVzLW1vZHVsZS1sZXhlckAyLjEuMCIsICIiLCB7fSwgInNoYTUxMi1uMjd6VFlNall1MWFqNE1qQ1d6U1A3RzlyNzV1dHNhb2M4bTYxd2VLK1c4Sk1CR0dReWJkNDNHc3RDWFozV05tU0Z0R1Q5d2k1OXFRVFc2bWhUUjVMUT09Il0sCgogICAgImVzYnVpbGQiOiBbImVzYnVpbGRAMC4yNS40IiwgIiIsIHsgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiQGVzYnVpbGQvYWl4LXBwYzY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9hbmRyb2lkLWFybSI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvYW5kcm9pZC1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvYW5kcm9pZC14NjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2Rhcndpbi1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZGFyd2luLXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZnJlZWJzZC1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvZnJlZWJzZC14NjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWFybSI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtYXJtNjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWlhMzIiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LWxvb25nNjQiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LW1pcHM2NGVsIjogIjAuMjUuNCIsICJAZXNidWlsZC9saW51eC1wcGM2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtcmlzY3Y2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbGludXgtczM5MHgiOiAiMC4yNS40IiwgIkBlc2J1aWxkL2xpbnV4LXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvbmV0YnNkLWFybTY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9uZXRic2QteDY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9vcGVuYnNkLWFybTY0IjogIjAuMjUuNCIsICJAZXNidWlsZC9vcGVuYnNkLXg2NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvc3Vub3MteDY0IjogIjAuMjUuNCIsICJAZXNidWlsZC93aW4zMi1hcm02NCI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvd2luMzItaWEzMiI6ICIwLjI1LjQiLCAiQGVzYnVpbGQvd2luMzIteDY0IjogIjAuMjUuNCIgfSwgImJpbiI6IHsgImVzYnVpbGQiOiAiYmluL2VzYnVpbGQiIH0gfSwgInNoYTUxMi04cGdqTFVjVWpjZ0RnKzJRNE5ZWG5QYm8vdm5jQVk0VW15YUNtMGpaZXZFUnFDSFpJYVd3ZEpIa2Y4WFF0dTRBeFNLQ2R2clViVDBYVXIxSWRaekk4UT09Il0sCgogICAgImVzY2FsYWRlIjogWyJlc2NhbGFkZUAzLjIuMCIsICIiLCB7fSwgInNoYTUxMi1XVWoycWx4YVF0TzRnNlBxNWMyOUdUY1dHRHlkOGl0TDh6VGxpcGdFQ3ozSmVzQWlpT0tvdGQ4SlU2b3RCM1BBQ2dHNnhrSlV5Vmhib01TK2JqZS9qQT09Il0sCgogICAgImVzdHJlZS13YWxrZXIiOiBbImVzdHJlZS13YWxrZXJAMy4wLjMiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQHR5cGVzL2VzdHJlZSI6ICJeMS4wLjAiIH0gfSwgInNoYTUxMi03UlVLZlhnU01Na3p0Nlp1WG1xYXBPdXJMR1BQZmdqNmw5dVJaN2xSR29sdmsweTJ5b2NjMzVMZGN4S0M1UFFaZG4yRE1xaW9BUTJOb1djclRLbW02Zz09Il0sCgogICAgImV4cGVjdC10eXBlIjogWyJleHBlY3QtdHlwZUAxLjMuMCIsICIiLCB7fSwgInNoYTUxMi1rbnZ5ZWF1WWhxak9ZdlE2Nk16blNNczgzd21IckN5Y05FTjZBbysyQWVZRWZ4VUlrdWlWeGRFYTFxbEdFUEsrV2UzbjBUSGlEY2lZU3NDY2dXL0RvQT09Il0sCgogICAgImZkaXIiOiBbImZkaXJANi41LjAiLCAiIiwgeyAicGVlckRlcGVuZGVuY2llcyI6IHsgInBpY29tYXRjaCI6ICJeMyB8fCBeNCIgfSwgIm9wdGlvbmFsUGVlcnMiOiBbInBpY29tYXRjaCJdIH0sICJzaGE1MTItdEliWXRaYnVjT3MwQlJHcVBKa3NoSlVZZEwrU0RIN2RWTThnankrRVJwM1dBVWpMRUZKRSswMmthbnlIdHdqV09ud3JLWUJpd0FtTTBwNGtMSkFuWGc9PSJdLAoKICAgICJmc2V2ZW50cyI6IFsiZnNldmVudHNAMi4zLjIiLCAiIiwgeyAib3MiOiAiZGFyd2luIiB9LCAic2hhNTEyLXhpcU1RUjR4QWVIVHVCOXVXbStmRlJjSU9nS0JNaU9CUCtlWGl5VDdqc2dWQ3ExYmtWeWd0MDBvQVNvd0I3RWR0cE9IYWFQZ0t0ODEyUDlhYitEREtBPT0iXSwKCiAgICAiZ2V0LWNhbGxlci1maWxlIjogWyJnZXQtY2FsbGVyLWZpbGVAMi4wLjUiLCAiIiwge30sICJzaGE1MTItRHlGUDNCTS8zWUhUUU9DVUwvdzBPWkhSMGxwS2VHcnhvdGNIV2NxTkVkbmx0cUZ3WFZmaEVCUTk0ZUlvMzRBZlFwbzByR2tpNGN5SWlmdFkwNmgyRmc9PSJdLAoKICAgICJncmFjZWZ1bC1mcyI6IFsiZ3JhY2VmdWwtZnNANC4yLjExIiwgIiIsIHt9LCAic2hhNTEyLVJiSjUvam1GY05OQ2NEVjVvOWVUbkJMSi9Ic3pXVjBQNzNiYytGZjRuUy9ySmorWWFTNklHeWlPTDBWb0JZWCtsMVdybDNrNjNoL0tySCtuaEowWHZRPT0iXSwKCiAgICAiaGFzLWZsYWciOiBbImhhcy1mbGFnQDQuMC4wIiwgIiIsIHt9LCAic2hhNTEyLUV5a0pUL1ExS2pUV2N0cHBnSUFnZlNPMHRLVnVaVWpoZ01yMTdrcVR1bU1sNkFmdjNFSVNsZVU3cVpVem9YREZUQUhUREM0Tk9vRy9aeFUzRXZsTVBRPT0iXSwKCiAgICAiaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQiOiBbImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50QDMuMC4wIiwgIiIsIHt9LCAic2hhNTEyLXp5bW01K3Urc0NzU1d5RDlxTmFlalYzREZ2aENLY2xLZGl6WWFKVXVIQTgzUkxqYjduU3VHbmRkQ0hHdjBoaytLWTdCTUFsc1dlSzRVZWc2RVY2WFFnPT0iXSwKCiAgICAiaml0aSI6IFsiaml0aUAyLjcuMCIsICIiLCB7ICJiaW4iOiB7ICJqaXRpIjogImxpYi9qaXRpLWNsaS5tanMiIH0gfSwgInNoYTUxMi1BQy83Sm9mSnZaR3JybmVXTmFFbkplT0xVeCtKbEd0N3ROYTB3WmlSUFQ0TVkxd21mS2p0Mis2TzJwMnV6Mitza2xsOE9aWm1KTU5xZWtlN2tLYk5nUT09Il0sCgogICAgImxpYnBob25lbnVtYmVyLWpzIjogWyJsaWJwaG9uZW51bWJlci1qc0AxLjEyLjQxIiwgIiIsIHt9LCAic2hhNTEyLWxzbU1tR1hCeFhJSy9WTUxFajBrTDZNdFVzMWtCR2oxblRDemk2emdRb0cxREV3cXd0MkRReUh4Y0x5a2NlSXhBbmZFM2h5YTdOdUloNlBwQzZTM2ZBPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzIjogWyJsaWdodG5pbmdjc3NAMS4zMi4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImRldGVjdC1saWJjIjogIl4yLjAuMyIgfSwgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAibGlnaHRuaW5nY3NzLWFuZHJvaWQtYXJtNjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1kYXJ3aW4tYXJtNjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1kYXJ3aW4teDY0IjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtZnJlZWJzZC14NjQiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1saW51eC1hcm0tZ251ZWFiaWhmIjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251IjogIjEuMzIuMCIsICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtbXVzbCI6ICIxLjMyLjAiLCAibGlnaHRuaW5nY3NzLWxpbnV4LXg2NC1nbnUiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtbXVzbCI6ICIxLjMyLjAiLCAibGlnaHRuaW5nY3NzLXdpbjMyLWFybTY0LW1zdmMiOiAiMS4zMi4wIiwgImxpZ2h0bmluZ2Nzcy13aW4zMi14NjQtbXN2YyI6ICIxLjMyLjAiIH0gfSwgInNoYTUxMi1OWFlCemluTnJibGZyYVBHeXJiUG9EMTlDMWg5bGZJLzFtemdXWXZYVVRlNDE0R3ovWDFGRDJYQlpTWk03clJUck1BOEpMM090QWFHaWZySUtoUTV5UT09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1hbmRyb2lkLWFybTY0IjogWyJsaWdodG5pbmdjc3MtYW5kcm9pZC1hcm02NEAxLjMyLjAiLCAiIiwgeyAib3MiOiAiYW5kcm9pZCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItWUs3L0NsVHQ0a0FLMHZvNnczWCtQbm0wRDJjZjJ2UEhiaE9YZG9OdGkxR2EwYWwxUDRUQlpod2pBVHZqTndMRUJDbkt2akpjMmpRZ0hYSDBORXdsQWc9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtZGFyd2luLWFybTY0IjogWyJsaWdodG5pbmdjc3MtZGFyd2luLWFybTY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogImFybTY0IiB9LCAic2hhNTEyLVJ6ZUc5SnU1YmFnMkJ2MS9sd2xWSnZCRTNxNlR0WHNrZFpMTEN5Zmc1cHQrSEx6OUJxbElDTzdMWk03VkhOVFRuLzVQUmhIRkJTams1bGM0Y21zY1BRPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzLWRhcndpbi14NjQiOiBbImxpZ2h0bmluZ2Nzcy1kYXJ3aW4teDY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJkYXJ3aW4iLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1VK1FzQnAybS9zMndxcFVZVC82d25sYWdkWmJ0WmRuZFNtdXQvTkpxbENjTUxUV3A1bXVDcklEK0s1VUo2anFEMkJGc2hlakNZWG5pUERiTmg3M1Y4dz09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1mcmVlYnNkLXg2NCI6IFsibGlnaHRuaW5nY3NzLWZyZWVic2QteDY0QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJmcmVlYnNkIiwgImNwdSI6ICJ4NjQiIH0sICJzaGE1MTItSkNUaWdlZEVrc1prM3RIVFR0aG5NZFZmR2Y2MUZreThKaTJFNFlqVVRFUVgxNHhpeS9sVHpYbnUxdndpWmUzYlllMHErU3BzU0gvQ1RlRFhLNldIaWc9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtLWdudWVhYmloZiI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LWFybS1nbnVlYWJpaGZAMS4zMi4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm0iIH0sICJzaGE1MTIteDZybm5wUmEyR0wwelFPa3Q2cnRzM1lEUHpkdUxwV3Z3QUY2RU1oWEZWWlhENHRQckJrRUZxekdvd3pDc0lXc1BqcVNLK3R5TkVPRFVCWGVlVkhTa3c9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251IjogWyJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtZ251QDEuMzIuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItMG5uTXlveU9MUkpYZmJNT2lsYVNSY0xIM0p3NXo5SEROR2ZUL2d3Q1BnYURqbngwaTh3N3ZCekZMRlIxZjZDTUxLRjhnVmJlYm1rVU4zZmEva1FKcFE9PSJdLAoKICAgICJsaWdodG5pbmdjc3MtbGludXgtYXJtNjQtbXVzbCI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LWFybTY0LW11c2xAMS4zMi4wIiwgIiIsIHsgIm9zIjogImxpbnV4IiwgImNwdSI6ICJhcm02NCIgfSwgInNoYTUxMi1VcFFrb2VucjRVSkV6Z1ZJWXBJODBsREZ2Um1QVmc2b3Fib05IZm9INENRSWZOQStIT3JaN01vN0taUDAyZEM2TGpnaFBRSmVCc3ZYaEpvZC93bklCZz09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtZ251IjogWyJsaWdodG5pbmdjc3MtbGludXgteDY0LWdudUAxLjMyLjAiLCAiIiwgeyAib3MiOiAibGludXgiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1WN1FyNTJJaFptZEtQVnIrVnR3OG8rV0xzUUpZQ1RkOGxvSWZwRGFNUldHVVpmQk9ZRUpleUpJa3FHSURNWlB3UHgyNHBVTWZ3U3h4SThwaHIvTWJPQT09Il0sCgogICAgImxpZ2h0bmluZ2Nzcy1saW51eC14NjQtbXVzbCI6IFsibGlnaHRuaW5nY3NzLWxpbnV4LXg2NC1tdXNsQDEuMzIuMCIsICIiLCB7ICJvcyI6ICJsaW51eCIsICJjcHUiOiAieDY0IiB9LCAic2hhNTEyLWJZY0xwK1ZiMGF3c2lYZy84MHVDUmV6Q1lITmcxL2wzbXQwZ3pIbldWOVhQMVc1c0thNS9UQ2RHV2FSL3pCTTJQZUYvSGJzUXYvajJVUk5PaVZ1eFdnPT0iXSwKCiAgICAibGlnaHRuaW5nY3NzLXdpbjMyLWFybTY0LW1zdmMiOiBbImxpZ2h0bmluZ2Nzcy13aW4zMi1hcm02NC1tc3ZjQDEuMzIuMCIsICIiLCB7ICJvcyI6ICJ3aW4zMiIsICJjcHUiOiAiYXJtNjQiIH0sICJzaGE1MTItOFNiQzhCUjQwcFM2YmFDTThzYnRZRFN3RVZRZDRKbEZUT2xhRDNnV0dIZlRoVGNBQm5OREJkYTZlVFplcWJvZmFsSUpoRngwcUt6Z0hKbWNQVG5HZHc9PSJdLAoKICAgICJsaWdodG5pbmdjc3Mtd2luMzIteDY0LW1zdmMiOiBbImxpZ2h0bmluZ2Nzcy13aW4zMi14NjQtbXN2Y0AxLjMyLjAiLCAiIiwgeyAib3MiOiAid2luMzIiLCAiY3B1IjogIng2NCIgfSwgInNoYTUxMi1BbXE5Qi9Tb1pZZERpMWtGcm9qbm9xUEx4WWhRNFdvNVhpTDhFVkpyVnNCOEFSb0MxUFdXNlZHdFQwV0tDZW1qeThhQytsb3VKbmpTN1UxOHgzYjA2UT09Il0sCgogICAgIm1hZ2ljLXN0cmluZyI6IFsibWFnaWMtc3RyaW5nQDAuMzAuMjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjIjogIl4xLjUuNSIgfSB9LCAic2hhNTEyLXZkMkY0WVV5RVhLR2NMSG9xK1RFeUNqeHVlU2VIbkZ4eXlqTnA4MHlnMFhWNHZVaG5EZXIvbHZ2bHFNL2FyQjViWFFONUsyLzNvaW55Q1J5eDhUMkNRPT0iXSwKCiAgICAibmFub2lkIjogWyJuYW5vaWRAMy4zLjEyIiwgIiIsIHsgImJpbiI6IHsgIm5hbm9pZCI6ICJiaW4vbmFub2lkLmNqcyIgfSB9LCAic2hhNTEyLVpCOVJILzM5cXBxNVZ1NlkrTm1VYUZoUVI2cHArTTJYdDc2WEJuRXdEYUdjVkFxaGx2eHJsM0IyYktTNUQzTkgzUVI3NnYzYVNyS2FGL0tpeTdsRXRRPT0iXSwKCiAgICAibmV4dCI6IFsibmV4dEAxNi4yLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQG5leHQvZW52IjogIjE2LjIuNiIsICJAc3djL2hlbHBlcnMiOiAiMC41LjE1IiwgImJhc2VsaW5lLWJyb3dzZXItbWFwcGluZyI6ICJeMi45LjE5IiwgImNhbml1c2UtbGl0ZSI6ICJeMS4wLjMwMDAxNTc5IiwgInBvc3Rjc3MiOiAiOC40LjMxIiwgInN0eWxlZC1qc3giOiAiNS4xLjYiIH0sICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkBuZXh0L3N3Yy1kYXJ3aW4tYXJtNjQiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy1kYXJ3aW4teDY0IjogIjE2LjIuNiIsICJAbmV4dC9zd2MtbGludXgtYXJtNjQtZ251IjogIjE2LjIuNiIsICJAbmV4dC9zd2MtbGludXgtYXJtNjQtbXVzbCI6ICIxNi4yLjYiLCAiQG5leHQvc3djLWxpbnV4LXg2NC1nbnUiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy1saW51eC14NjQtbXVzbCI6ICIxNi4yLjYiLCAiQG5leHQvc3djLXdpbjMyLWFybTY0LW1zdmMiOiAiMTYuMi42IiwgIkBuZXh0L3N3Yy13aW4zMi14NjQtbXN2YyI6ICIxNi4yLjYiLCAic2hhcnAiOiAiXjAuMzQuNSIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJAb3BlbnRlbGVtZXRyeS9hcGkiOiAiXjEuMS4wIiwgIkBwbGF5d3JpZ2h0L3Rlc3QiOiAiXjEuNTEuMSIsICJiYWJlbC1wbHVnaW4tcmVhY3QtY29tcGlsZXIiOiAiKiIsICJyZWFjdCI6ICJeMTguMi4wIHx8IDE5LjAuMC1yYy1kZTY4ZDJmNC0yMDI0MTIwNCB8fCBeMTkuMC4wIiwgInJlYWN0LWRvbSI6ICJeMTguMi4wIHx8IDE5LjAuMC1yYy1kZTY4ZDJmNC0yMDI0MTIwNCB8fCBeMTkuMC4wIiwgInNhc3MiOiAiXjEuMy4wIiB9LCAib3B0aW9uYWxQZWVycyI6IFsiQG9wZW50ZWxlbWV0cnkvYXBpIiwgIkBwbGF5d3JpZ2h0L3Rlc3QiLCAiYmFiZWwtcGx1Z2luLXJlYWN0LWNvbXBpbGVyIiwgInNhc3MiXSwgImJpbiI6IHsgIm5leHQiOiAiZGlzdC9iaW4vbmV4dCIgfSB9LCAic2hhNTEyLXFPVmdLSmcxK0F0MTVOcGVVUCtlSmdDSHZUQ2dYc29nd2VxODdSaS9JeDdQa3FRSGc0c2RhWG1TRnFLbGdhSVhFNGtXMGcyNUxFNjhXODdVQU5sSHR3PT0iXSwKCiAgICAib2J1ZyI6IFsib2J1Z0AyLjEuMSIsICIiLCB7fSwgInNoYTUxMi11VHFGOU11UHJhQVErSXNuUGYzNjZSRzRjUDlSdFVpN01MTzFOM0tFYyt3YjBhNnlLcGVMMGxtazJJQjFqWTVLSFBBbFRjNlQvSlJkQy9ZcXhITndrUT09Il0sCgogICAgInBhdGhlIjogWyJwYXRoZUAyLjAuMyIsICIiLCB7fSwgInNoYTUxMi1XVWpHY0FxUDFnUWFjb1FlK09CSnNGQTdMZDREeVh1VUlqWjVjYzc1Y0xIdko3ZHROc1R1Z3BoeElBRHdzcFMrQXJhQVVlUENLclNWdFBMRmovRjg4dz09Il0sCgogICAgInBpY29jb2xvcnMiOiBbInBpY29jb2xvcnNAMS4xLjEiLCAiIiwge30sICJzaGE1MTIteGNlSDJzbmh0YjVNOWxpcURzbUV3NTZsZTM3Nm1UWmtFWC9qRWIvUnhORnllZ051bDdlTnNsQ1hQOUZEai9MY3UwWDhLRXlNY2VQMm50cGFIckRFVkE9PSJdLAoKICAgICJwaWNvbWF0Y2giOiBbInBpY29tYXRjaEA0LjAuNCIsICIiLCB7fSwgInNoYTUxMi1RUDg4QkFLdk1hbS8zTnhINnZqMm8yMVI2TWp4WlVBZDZubHdBUy9wbkd2TjlJVkxvY0xIeEdZSXpGaGc2ZlVRKzV0aDZQNGR2NGVXOWpYM0RTSWo3QT09Il0sCgogICAgInBsYXl3cmlnaHQiOiBbInBsYXl3cmlnaHRAMS42MC4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInBsYXl3cmlnaHQtY29yZSI6ICIxLjYwLjAiIH0sICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgImZzZXZlbnRzIjogIjIuMy4yIiB9LCAiYmluIjogeyAicGxheXdyaWdodCI6ICJjbGkuanMiIH0gfSwgInNoYTUxMi1oaGVIZG9rTThjZHFDYjBsY0Uzcyt6VDR0NFcrdnZqcEd4c1psRG5pa2Fyeng4dFN6TWViaDNVaUZ0Z3F3RnduVG5qWVFjc3lNRjhlaTJtQ08vdHBlQT09Il0sCgogICAgInBsYXl3cmlnaHQtY29yZSI6IFsicGxheXdyaWdodC1jb3JlQDEuNjAuMCIsICIiLCB7ICJiaW4iOiB7ICJwbGF5d3JpZ2h0LWNvcmUiOiAiY2xpLmpzIiB9IH0sICJzaGE1MTItOWJXNnp2WC9tMGxFYmdUS0o2WXBwT0t4OEgzVk9QQk1PQ0ZoMmlyWEZPVDRCYkhncng1aFBqd0pZTFQ0MEx1KzRxdEQzNnFLYy9IbjU2U3RVVzU3SUE9PSJdLAoKICAgICJwb3N0Y3NzIjogWyJwb3N0Y3NzQDguNS4xNSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJuYW5vaWQiOiAiXjMuMy4xMiIsICJwaWNvY29sb3JzIjogIl4xLjEuMSIsICJzb3VyY2UtbWFwLWpzIjogIl4xLjIuMSIgfSB9LCAic2hhNTEyLUZmUjhzamQ0ZW0yVDZmYjNJMk13QUpVN0hXVk1yOXpiYStlbm1RZWVXRmZDYm0rVU9DLzBYNERTOFh0cFVUTXdXTUdiaktZUDd4amZOZWt6eUdtQjNBPT0iXSwKCiAgICAicmVhY3QiOiBbInJlYWN0QDE5LjIuNiIsICIiLCB7fSwgInNoYTUxMi1zZldHR2ZhdmkweHI4UGcwc1ZzeUhNQU96aVZZS2dQTE5yUzdpZytpdk1OYjN3YkNCdzNLeHRmbHNHQkF3RDNnWVFsRS9BRVpzVExnVG9SclNDamIwUT09Il0sCgogICAgInJlYWN0LWRheS1waWNrZXIiOiBbInJlYWN0LWRheS1waWNrZXJAOS4xNC4wIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBkYXRlLWZucy90eiI6ICJeMS40LjEiLCAiQHRhYmJ5X2FpL2hpanJpLWNvbnZlcnRlciI6ICIxLjAuNSIsICJkYXRlLWZucyI6ICJeNC4xLjAiLCAiZGF0ZS1mbnMtamFsYWxpIjogIjQuMS4wLTAiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAicmVhY3QiOiAiPj0xNi44LjAiIH0gfSwgInNoYTUxMi10QmFvRFdqUHdlME01cEdydW00SDBTUjZMeWsrQk85b0hucDlKYktwR0tXMm1scmFOUGdQOUJNZnNnNXBXcHdyc3NBUm1lcWs3WUJsMm9YdXRaVGFIQT09Il0sCgogICAgInJlYWN0LWRvbSI6IFsicmVhY3QtZG9tQDE5LjIuNiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJzY2hlZHVsZXIiOiAiXjAuMjcuMCIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJyZWFjdCI6ICJeMTkuMi42IiB9IH0sICJzaGE1MTItMHByTUkraHZCYlBqc1dueERMeGxDR3lNOFBONlV1V2pFVUNZbVpoTzY3eElWOVhhc2Evci92RG5xK1h5cTRMbzI3ZzhRU2JPNVl6QVJ1MEQxU3BzM2c9PSJdLAoKICAgICJyZXF1aXJlLWRpcmVjdG9yeSI6IFsicmVxdWlyZS1kaXJlY3RvcnlAMi4xLjEiLCAiIiwge30sICJzaGE1MTItZkd4RUk3K3dzRzl4cnZkanNybG1MMjJPTVRUaUhSd0FNcm9pRWVNZ3E4Z3pvTEMvUFFyN1JzUkRTVExVZy9iWkFadEYrVFZJa0hjNi80UklLcnVpK1E9PSJdLAoKICAgICJyZXNlbGVjdCI6IFsicmVzZWxlY3RANS4yLjAiLCAiIiwge30sICJzaGE1MTItQWdaM1VPWm0zWW5kZnJKNE9ZamdyVDdibUNtLzFpcWtqdkVmSC9vWWp6aDZQRDJxdzRRdVQzampuWElycGR0NE1UcE1YY2xNVDNsWGJtUlkrWFJha3c9PSJdLAoKICAgICJyb2xsZG93biI6IFsicm9sbGRvd25AMS4wLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQG94Yy1wcm9qZWN0L3R5cGVzIjogIj0wLjEzMC4wIiwgIkByb2xsZG93bi9wbHVnaW51dGlscyI6ICJeMS4wLjAiIH0sICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsgIkByb2xsZG93bi9iaW5kaW5nLWFuZHJvaWQtYXJtNjQiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctZGFyd2luLWFybTY0IjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLWRhcndpbi14NjQiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctZnJlZWJzZC14NjQiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctbGludXgtYXJtLWdudWVhYmloZiI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1hcm02NC1nbnUiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctbGludXgtYXJtNjQtbXVzbCI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy1saW51eC1wcGM2NC1nbnUiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctbGludXgtczM5MHgtZ251IjogIjEuMC4xIiwgIkByb2xsZG93bi9iaW5kaW5nLWxpbnV4LXg2NC1nbnUiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctbGludXgteDY0LW11c2wiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctb3Blbmhhcm1vbnktYXJtNjQiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctd2FzbTMyLXdhc2kiOiAiMS4wLjEiLCAiQHJvbGxkb3duL2JpbmRpbmctd2luMzItYXJtNjQtbXN2YyI6ICIxLjAuMSIsICJAcm9sbGRvd24vYmluZGluZy13aW4zMi14NjQtbXN2YyI6ICIxLjAuMSIgfSwgImJpbiI6IHsgInJvbGxkb3duIjogImJpbi9jbGkubWpzIiB9IH0sICJzaGE1MTItWDBLUUhsak5uRWtXTnFxaXo5ekpyR3VuaDFCMEhnT3hMWHZuRnBDT2NhZHpjeTVxb2haM3RxTUVVZzAwdm5jb1Jvdlh1SzNacUNUOUtubkt6b0luRlE9PSJdLAoKICAgICJyeGpzIjogWyJyeGpzQDcuOC4yIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRzbGliIjogIl4yLjEuMCIgfSB9LCAic2hhNTEyLWRoS2Y5MDNVL1BRWlk2Ym9OTnRBR2RXYkc4NVdBYmpULzF4WW9aSUM3RkFZMHlXYXBPQlFWc1ZyRGw1OFc4Ni8vZTFWcE1OQnRSVjRNYVhmZE15U0ZBPT0iXSwKCiAgICAic2NoZWR1bGVyIjogWyJzY2hlZHVsZXJAMC4yNy4wIiwgIiIsIHt9LCAic2hhNTEyLWVOditXclZiS3UxZjN2YllKVC94dGlGNXN5QTVIUElNdGY5SWdZL25LZzBzV3F6QVVFdnFZL3htN09jWmMvcWFmTHgvaU85RmdPbWVTQXA0djV0aS9RPT0iXSwKCiAgICAic2VtdmVyIjogWyJzZW12ZXJANy44LjAiLCAiIiwgeyAiYmluIjogeyAic2VtdmVyIjogImJpbi9zZW12ZXIuanMiIH0gfSwgInNoYTUxMi1BY003ZFYvNXVsNEVla29RMjlBZ201dnJpOEpOcVJ5ajM5bzBxcFg2dkRGMkdacnR1dFpsNVJ3Z0QxWG5aamlUQWZuY3NKaE1JNDhRUUgzc044N1lOQT09Il0sCgogICAgInNoYXJwIjogWyJzaGFycEAwLjM0LjUiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiQGltZy9jb2xvdXIiOiAiXjEuMC4wIiwgImRldGVjdC1saWJjIjogIl4yLjEuMiIsICJzZW12ZXIiOiAiXjcuNy4zIiB9LCAib3B0aW9uYWxEZXBlbmRlbmNpZXMiOiB7ICJAaW1nL3NoYXJwLWRhcndpbi1hcm02NCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC1kYXJ3aW4teDY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLWxpYnZpcHMtZGFyd2luLWFybTY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1kYXJ3aW4teDY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1hcm0iOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LWFybTY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eC1wcGM2NCI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgtcmlzY3Y2NCI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXgtczM5MHgiOiAiMS4yLjQiLCAiQGltZy9zaGFycC1saWJ2aXBzLWxpbnV4LXg2NCI6ICIxLjIuNCIsICJAaW1nL3NoYXJwLWxpYnZpcHMtbGludXhtdXNsLWFybTY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGlidmlwcy1saW51eG11c2wteDY0IjogIjEuMi40IiwgIkBpbWcvc2hhcnAtbGludXgtYXJtIjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLWxpbnV4LWFybTY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLWxpbnV4LXBwYzY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLWxpbnV4LXJpc2N2NjQiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgtczM5MHgiOiAiMC4zNC41IiwgIkBpbWcvc2hhcnAtbGludXgteDY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLWxpbnV4bXVzbC1hcm02NCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC1saW51eG11c2wteDY0IjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLXdhc20zMiI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC13aW4zMi1hcm02NCI6ICIwLjM0LjUiLCAiQGltZy9zaGFycC13aW4zMi1pYTMyIjogIjAuMzQuNSIsICJAaW1nL3NoYXJwLXdpbjMyLXg2NCI6ICIwLjM0LjUiIH0gfSwgInNoYTUxMi1PdTlJNUZ0OVdOY0NiWHJVOWNNZ1BCY0NLOExpd0xxY2J5d1czdDRvRFYzN24xcHpwdU5Mc1lpQVY4ZU9EbmpidFFsU0R3WjJjVUVlUXo0RTU0SGx0Zz09Il0sCgogICAgInNoZWxsLXF1b3RlIjogWyJzaGVsbC1xdW90ZUAxLjguMyIsICIiLCB7fSwgInNoYTUxMi1PYm1uSUY0aFhOZzFCcWhuSG1nYkRFVEY4ZExQQ2dnWldCamtRZmhacGJzelpuWXVyNURVbGpUY0NIaWk1TEMzSjVFMHllTy8xTElNeUgrVXZIUWd5dz09Il0sCgogICAgInNpZ2luZm8iOiBbInNpZ2luZm9AMi4wLjAiLCAiIiwge30sICJzaGE1MTIteWJ4MFdPMS84YlNCTEVXWFp2RWQ3Z01XM1NuM0pGbFczVHZYMW5SRWJETFJOUU5hZU5OOFdLMG1lQndQZEFhT0k3VHRSUlJKbi9FczF6aHJyQ0h1N2c9PSJdLAoKICAgICJzb3VyY2UtbWFwIjogWyJzb3VyY2UtbWFwQDAuNi4xIiwgIiIsIHt9LCAic2hhNTEyLVVqZ2FwdW1XbGJNaGtCZ3pUN1lrYzVZWFVUNDZGMGlLdThTR1hxMGJjd1A1ZHovaDBQbGo2ZW5KcWp6MVpicTJsNVdhcVluclZid1dPV015RjNGNDdnPT0iXSwKCiAgICAic291cmNlLW1hcC1qcyI6IFsic291cmNlLW1hcC1qc0AxLjIuMSIsICIiLCB7fSwgInNoYTUxMi1VWFdNS2hMT3dWS2I3MjhJVXRRUFh4ZllVK3VzZHlidFVySy84dUdFOENRTXZyaE9wd3Z6REJ3ajBRaFNMN01RYzd2SXNJU0JHOFZROCtJRFF4cGZRQT09Il0sCgogICAgInNvdXJjZS1tYXAtc3VwcG9ydCI6IFsic291cmNlLW1hcC1zdXBwb3J0QDAuNS4yMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJidWZmZXItZnJvbSI6ICJeMS4wLjAiLCAic291cmNlLW1hcCI6ICJeMC42LjAiIH0gfSwgInNoYTUxMi11QkhVM0wzY3pzSXlZWEtYODhmZHJHb3Z4ZFNDb1RHRFJaNlNZWHRTUnhMWlV6SGc1UC82Nkh0NnVvVWxIdTlFWm9kK2luWGhLbzNxUWd3WFVUL3kxdz09Il0sCgogICAgInN0YWNrYmFjayI6IFsic3RhY2tiYWNrQDAuMC4yIiwgIiIsIHt9LCAic2hhNTEyLTFYTUpFNWZRbzFqR0g2WS83ZWJud1BPQkVrSUVuVDRRRjMyZDVSMStWWGRYdmVNMElCTUp0OHpmYXhYMVAzUWhWd3JZZSs1NzYramtBTnRTUzJtQmJ3PT0iXSwKCiAgICAic3RkLWVudiI6IFsic3RkLWVudkA0LjEuMCIsICIiLCB7fSwgInNoYTUxMi1ScTd5YmNYMlJ1QzU1cjlvYVBWRVc3L3h1M3RqOHU0R2VCWUhCV0N5Y2hGdHpNSXI4NkE3ZTNQUEVCUFQzN3NIU3RLWDMrVGlYL0ZyL0FDbUpMVmxMUT09Il0sCgogICAgInN0cmluZy13aWR0aCI6IFsic3RyaW5nLXdpZHRoQDQuMi4zIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImVtb2ppLXJlZ2V4IjogIl44LjAuMCIsICJpcy1mdWxsd2lkdGgtY29kZS1wb2ludCI6ICJeMy4wLjAiLCAic3RyaXAtYW5zaSI6ICJeNi4wLjEiIH0gfSwgInNoYTUxMi13S3lRUlFwakowc0lwNjJFclNaZEdzak1KV3NhcDVvUk5paEhodTZHN0pWTy85aklCNlV5ZXZMK3RYdU9xcm5nOGovY3hLVFd5V1V3dlNUcmlpWnovZz09Il0sCgogICAgInN0cmlwLWFuc2kiOiBbInN0cmlwLWFuc2lANi4wLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiYW5zaS1yZWdleCI6ICJeNS4wLjEiIH0gfSwgInNoYTUxMi1ZMzhWUFNIY3FrRnJDcEZuUTl2dVNYbXF1dXY1b1hPS3BHZVQ2YUdycjNvM0djOUFsVmE2SkJmVVNPQ25ieEdHWkYrLzBvb0k3S3JQdVVTenRVZFU1QT09Il0sCgogICAgInN0eWxlZC1qc3giOiBbInN0eWxlZC1qc3hANS4xLjYiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiY2xpZW50LW9ubHkiOiAiMC4wLjEiIH0sICJwZWVyRGVwZW5kZW5jaWVzIjogeyAicmVhY3QiOiAiPj0gMTYuOC4wIHx8IDE3LngueCB8fCBeMTguMC4wLTAgfHwgXjE5LjAuMC0wIiB9IH0sICJzaGE1MTItcVNWeURUZU1vdGR2UVlvSFdMTkd3UkZKSEMraStadmRCUllvc09GZ0MrV2cxdng0ZnJOMi9SRy9OQTdTWXFxdktOTGYzOVAyTFNSQTJwdTZuMFhZWkE9PSJdLAoKICAgICJzdXBwb3J0cy1jb2xvciI6IFsic3VwcG9ydHMtY29sb3JAOC4xLjEiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiaGFzLWZsYWciOiAiXjQuMC4wIiB9IH0sICJzaGE1MTItTXBVRU4yT29kdFV6eHZLUWw3MmNVRjdSUTVFaUhzR3ZTc1ZHMGlhOWM1UmJXR0wyQ0k0QzdFcFBTOFVUQklwbG5selppTnVWNTZ3K0Z1Tnh5M3R5MlE9PSJdLAoKICAgICJ0YWlsd2luZC1tZXJnZSI6IFsidGFpbHdpbmQtbWVyZ2VAMy42LjAiLCAiIiwge30sICJzaGE1MTItdXhMN3FBVlFyaXFSUVBBeUszcGo2NlZxc2tXcW9aMzdQVzk0andPVHdOZnEvejlveXUxVitlcXJacXRSMitmQ2lYZFlPWmUvTW9kdDhHdHZxTnp1K3c9PSJdLAoKICAgICJ0YWlsd2luZGNzcyI6IFsidGFpbHdpbmRjc3NANC4zLjAiLCAiIiwge30sICJzaGE1MTIteTZueE1HQjFuTVc5UjZrOTZlNWdkSUZ6Y2ZML2dUSlJOYXFHZXMxWXZrTG5QVlh6V2dicUZGMnlMQzBUOEc3NzRuMjRjeDNQZThYcktvbmlDT0FIK1E9PSJdLAoKICAgICJ0YXBhYmxlIjogWyJ0YXBhYmxlQDIuMy4zIiwgIiIsIHt9LCAic2hhNTEyLXV4Yy96cHFGZzZ4N0M4dk9FN2xoNkxiZGE4ZUVMOXptVm0vUExlVFBCUmhoMXhDZ2RXYVErSjFDVWllR3BJZm0ySGR0c1VwUnYrSHNoaWFzQk1jYzZBPT0iXSwKCiAgICAidGVyc2VyIjogWyJ0ZXJzZXJANS4xNi45IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkBqcmlkZ2V3ZWxsL3NvdXJjZS1tYXAiOiAiXjAuMy4yIiwgImFjb3JuIjogIl44LjUuMCIsICJjb21tYW5kZXIiOiAiXjIuMjAuMCIsICJzb3VyY2UtbWFwLXN1cHBvcnQiOiAifjAuNS4yMCIgfSwgImJpbiI6IHsgInRlcnNlciI6ICJiaW4vdGVyc2VyIiB9IH0sICJzaGE1MTItSFBhL0ZkVEI5WEdJMkgxL2tlTEZaSHhsNldOdkFJNFlhbEhHdERRVGxNbkpjb3FTYWIxVXdMNGwxaEdFaHM2L0dtTEhCWklnL1lnQisramNiem9PRWc9PSJdLAoKICAgICJ0aW55YmVuY2giOiBbInRpbnliZW5jaEAyLjkuMCIsICIiLCB7fSwgInNoYTUxMi0wK0RVdnFXTVZhbExtaGE2bHI0a0Q4aUFNSzFIelYwL2FLbkN0V2I5djk2NDFUblAvTUZiN1BjMmJ4b3hRalRYQUVycnlYVmdVT2Z2MllxTmxscUdlZz09Il0sCgogICAgInRpbnlleGVjIjogWyJ0aW55ZXhlY0AxLjEuMiIsICIiLCB7fSwgInNoYTUxMi1kQXFTcUUvUmFicEJLSTgraDI2R2ZMcTZWYjNKVlhzMzBYWVFqZE1qYWovYzJ0UzhJWVlNYkl6UDU5OUt0Umo3YzU3L3dZQXBiM1FqZ1JnWG1yQ3VrQT09Il0sCgogICAgInRpbnlnbG9iYnkiOiBbInRpbnlnbG9iYnlAMC4yLjE2IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImZkaXIiOiAiXjYuNS4wIiwgInBpY29tYXRjaCI6ICJeNC4wLjQiIH0gfSwgInNoYTUxMi1wbjk5VmhvQUNZUjhuRkhoeHFpeCt1dnNiWGluZUFhc1dtNW9qWG9OOHhFd0s1S2QzL1RyaE5uMXdCeXVENTJVeFdSTHk4cHUra1JNbmlFaTZFcTlaZz09Il0sCgogICAgInRpbnlyYWluYm93IjogWyJ0aW55cmFpbmJvd0AzLjEuMCIsICIiLCB7fSwgInNoYTUxMi1CZitJTG1CZ3JldFVyZEp4elhNMFNnWExaM1hmaWFVdU9qL0lLUUh1VFhpcCswNVhuK3V5RVlkVmcwa1lEaXBUQmNMckNWeVV6QVB6N1FtQXJiMG1tdz09Il0sCgogICAgInRyZWUta2lsbCI6IFsidHJlZS1raWxsQDEuMi4yIiwgIiIsIHsgImJpbiI6IHsgInRyZWUta2lsbCI6ICJjbGkuanMiIH0gfSwgInNoYTUxMi1MME9ycGk4cUdwUkcvL05kK0g5MHZGQiszaUhudWUxelNTR21OT09DaDFHTEo3clVLVndWMkh2aWpwaEdRUzJVbWhVWmV3UzlWZ3Z4WUlkZ3IrZkcxQT09Il0sCgogICAgInRzbGliIjogWyJ0c2xpYkAyLjguMSIsICIiLCB7fSwgInNoYTUxMi1vSkZ1OTRIUWIrS1ZkdVNVUUw3d25wbXFuZm1Mc09BL25BaDZiNkVIMHdDRW9LMC9tUGVYVTZjM3dLRFY4M01rT3VIUFJIdFNYS0tVOTlJQmF6Uy8ydz09Il0sCgogICAgInR5cGVzY3JpcHQiOiBbInR5cGVzY3JpcHRANS45LjMiLCAiIiwgeyAiYmluIjogeyAidHNjIjogImJpbi90c2MiLCAidHNzZXJ2ZXIiOiAiYmluL3Rzc2VydmVyIiB9IH0sICJzaGE1MTItamwxdlp6UERpbkxyOWVVdDNKL3Q3VjZGZ05FdzlRanZCUGR5c3o5S2ZRREQ0MWZRckMyWTR2S1FkaWFVcEZUNGJYbGIxUkhoTHBwOHd0bTZNNVRnU3c9PSJdLAoKICAgICJ1bmRpY2ktdHlwZXMiOiBbInVuZGljaS10eXBlc0A2LjIxLjAiLCAiIiwge30sICJzaGE1MTItaXdEWnFnMFFBR3JnOVJhdjVING4wTTY0YzNta1I1OWNKNndRcCs3QzRuSTBnc21FeGFlZGFZTE5PNDRlVDRBdEJCd2piVGlHUE1sdDJNZDBUOUg5SlE9PSJdLAoKICAgICJ1c2Utc3luYy1leHRlcm5hbC1zdG9yZSI6IFsidXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmVAMS42LjAiLCAiIiwgeyAicGVlckRlcGVuZGVuY2llcyI6IHsgInJlYWN0IjogIl4xNi44LjAgfHwgXjE3LjAuMCB8fCBeMTguMC4wIHx8IF4xOS4wLjAiIH0gfSwgInNoYTUxMi1QcDZHU3dHUC9OclBJcnhWRkFJa09RZXl3OGxGZW5PSGlqUVdrVVRyRHZyRjRBTHF5bFAyQy9LQ2tlUzlkcFVNM0t2WVJRaG5hNXZ0N0lMOTUrWlE5dz09Il0sCgogICAgInZpdGUiOiBbInZpdGVAOC4wLjEzIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgImxpZ2h0bmluZ2NzcyI6ICJeMS4zMi4wIiwgInBpY29tYXRjaCI6ICJeNC4wLjQiLCAicG9zdGNzcyI6ICJeOC41LjE0IiwgInJvbGxkb3duIjogIjEuMC4xIiwgInRpbnlnbG9iYnkiOiAiXjAuMi4xNiIgfSwgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogeyAiZnNldmVudHMiOiAifjIuMy4zIiB9LCAicGVlckRlcGVuZGVuY2llcyI6IHsgIkB0eXBlcy9ub2RlIjogIl4yMC4xOS4wIHx8ID49MjIuMTIuMCIsICJAdml0ZWpzL2RldnRvb2xzIjogIl4wLjEuMTgiLCAiZXNidWlsZCI6ICJeMC4yNy4wIHx8IF4wLjI4LjAiLCAiaml0aSI6ICI+PTEuMjEuMCIsICJsZXNzIjogIl40LjAuMCIsICJzYXNzIjogIl4xLjcwLjAiLCAic2Fzcy1lbWJlZGRlZCI6ICJeMS43MC4wIiwgInN0eWx1cyI6ICI+PTAuNTQuOCIsICJzdWdhcnNzIjogIl41LjAuMCIsICJ0ZXJzZXIiOiAiXjUuMTYuMCIsICJ0c3giOiAiXjQuOC4xIiwgInlhbWwiOiAiXjIuNC4yIiB9LCAib3B0aW9uYWxQZWVycyI6IFsiQHR5cGVzL25vZGUiLCAiQHZpdGVqcy9kZXZ0b29scyIsICJlc2J1aWxkIiwgImppdGkiLCAibGVzcyIsICJzYXNzIiwgInNhc3MtZW1iZWRkZWQiLCAic3R5bHVzIiwgInN1Z2Fyc3MiLCAidGVyc2VyIiwgInRzeCIsICJ5YW1sIl0sICJiaW4iOiB7ICJ2aXRlIjogImJpbi92aXRlLmpzIiB9IH0sICJzaGE1MTItTUZ0akJZZ3ptU3htZ0E0UkFmakl5WFdwR2Uxb0FMbmpnVVR6elY3UUx4L1RLeEN6anRNSDZGZDkvZVZLKzVGZzFxTm96NVZBd3NtTXMvTm9mcm1Kdnc9PSJdLAoKICAgICJ2aXRlc3QiOiBbInZpdGVzdEA0LjEuNiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAdml0ZXN0L2V4cGVjdCI6ICI0LjEuNiIsICJAdml0ZXN0L21vY2tlciI6ICI0LjEuNiIsICJAdml0ZXN0L3ByZXR0eS1mb3JtYXQiOiAiNC4xLjYiLCAiQHZpdGVzdC9ydW5uZXIiOiAiNC4xLjYiLCAiQHZpdGVzdC9zbmFwc2hvdCI6ICI0LjEuNiIsICJAdml0ZXN0L3NweSI6ICI0LjEuNiIsICJAdml0ZXN0L3V0aWxzIjogIjQuMS42IiwgImVzLW1vZHVsZS1sZXhlciI6ICJeMi4wLjAiLCAiZXhwZWN0LXR5cGUiOiAiXjEuMy4wIiwgIm1hZ2ljLXN0cmluZyI6ICJeMC4zMC4yMSIsICJvYnVnIjogIl4yLjEuMSIsICJwYXRoZSI6ICJeMi4wLjMiLCAicGljb21hdGNoIjogIl40LjAuMyIsICJzdGQtZW52IjogIl40LjAuMC1yYy4xIiwgInRpbnliZW5jaCI6ICJeMi45LjAiLCAidGlueWV4ZWMiOiAiXjEuMC4yIiwgInRpbnlnbG9iYnkiOiAiXjAuMi4xNSIsICJ0aW55cmFpbmJvdyI6ICJeMy4xLjAiLCAidml0ZSI6ICJeNi4wLjAgfHwgXjcuMC4wIHx8IF44LjAuMCIsICJ3aHktaXMtbm9kZS1ydW5uaW5nIjogIl4yLjMuMCIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJAZWRnZS1ydW50aW1lL3ZtIjogIioiLCAiQG9wZW50ZWxlbWV0cnkvYXBpIjogIl4xLjkuMCIsICJAdHlwZXMvbm9kZSI6ICJeMjAuMC4wIHx8IF4yMi4wLjAgfHwgPj0yNC4wLjAiLCAiQHZpdGVzdC9icm93c2VyLXBsYXl3cmlnaHQiOiAiNC4xLjYiLCAiQHZpdGVzdC9icm93c2VyLXByZXZpZXciOiAiNC4xLjYiLCAiQHZpdGVzdC9icm93c2VyLXdlYmRyaXZlcmlvIjogIjQuMS42IiwgIkB2aXRlc3QvY292ZXJhZ2UtaXN0YW5idWwiOiAiNC4xLjYiLCAiQHZpdGVzdC9jb3ZlcmFnZS12OCI6ICI0LjEuNiIsICJAdml0ZXN0L3VpIjogIjQuMS42IiwgImhhcHB5LWRvbSI6ICIqIiwgImpzZG9tIjogIioiIH0sICJvcHRpb25hbFBlZXJzIjogWyJAZWRnZS1ydW50aW1lL3ZtIiwgIkBvcGVudGVsZW1ldHJ5L2FwaSIsICJAdHlwZXMvbm9kZSIsICJAdml0ZXN0L2Jyb3dzZXItcGxheXdyaWdodCIsICJAdml0ZXN0L2Jyb3dzZXItcHJldmlldyIsICJAdml0ZXN0L2Jyb3dzZXItd2ViZHJpdmVyaW8iLCAiQHZpdGVzdC9jb3ZlcmFnZS1pc3RhbmJ1bCIsICJAdml0ZXN0L2NvdmVyYWdlLXY4IiwgIkB2aXRlc3QvdWkiLCAiaGFwcHktZG9tIiwgImpzZG9tIl0sICJiaW4iOiB7ICJ2aXRlc3QiOiAidml0ZXN0Lm1qcyIgfSB9LCAic2hhNTEyLTZsdmpiUzNwOWI0Q3JkQ21ndXpiaDIvNHVvWGhHRTJxNzFSNE9YNXNxRjlSMWJvOVhkNmZHck1BZnZwNXduQ3psQm5GVmRDT3A2b251VFFWYm84aVVRPT0iXSwKCiAgICAid2h5LWlzLW5vZGUtcnVubmluZyI6IFsid2h5LWlzLW5vZGUtcnVubmluZ0AyLjMuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJzaWdpbmZvIjogIl4yLjAuMCIsICJzdGFja2JhY2siOiAiMC4wLjIiIH0sICJiaW4iOiB7ICJ3aHktaXMtbm9kZS1ydW5uaW5nIjogImNsaS5qcyIgfSB9LCAic2hhNTEyLWhVcm1hV0JkVkRjeHZZcW55aDA5enVuS3pST1dqYlpUaU55OGRCRWprUzdlaEVEUWliWEo3WHZsbXRid3VUY2xVaUl5TitDeVhRRDRWbWtvOGZObTh3PT0iXSwKCiAgICAid3JhcC1hbnNpIjogWyJ3cmFwLWFuc2lANy4wLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiYW5zaS1zdHlsZXMiOiAiXjQuMC4wIiwgInN0cmluZy13aWR0aCI6ICJeNC4xLjAiLCAic3RyaXAtYW5zaSI6ICJeNi4wLjAiIH0gfSwgInNoYTUxMi1ZVkdJajJrYW1MU1R4dzZOc1pqb0J4ZlN3c24weWNkZXNtYzRwK1EyMWM1elB1WjFwbCtOZnhWZHhQdGRIdm1OVk9RNlhTWUc0QVV0eXQvRmk3RDE2UT09Il0sCgogICAgInkxOG4iOiBbInkxOG5ANS4wLjgiLCAiIiwge30sICJzaGE1MTItMHBmRnplZ2VEV0pISklBbVRMUlAyRHdIamRGNXM3am85dHV6dGRReEFoSU5DZHZTKzNuR0lOcVBkMDBBcGhxSlIvMExoQU5VUzYvKzdTQ2I5OFlPZkE9PSJdLAoKICAgICJ5YW1sIjogWyJ5YW1sQDIuOS4wIiwgIiIsIHsgImJpbiI6IHsgInlhbWwiOiAiYmluLm1qcyIgfSB9LCAic2hhNTEyLTJBdmhOWDNtYjh6ZDZaeTdJTlR0U3BsMUYxNUhXNlducWowc3JXbGtLTGNwWWwvZ01JTUppeXVHcTJLZUkyWUZ4VVBqZGxCKzNMYzEwc2VNTHRMNGNBPT0iXSwKCiAgICAieWFyZ3MiOiBbInlhcmdzQDE3LjcuMiIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJjbGl1aSI6ICJeOC4wLjEiLCAiZXNjYWxhZGUiOiAiXjMuMS4xIiwgImdldC1jYWxsZXItZmlsZSI6ICJeMi4wLjUiLCAicmVxdWlyZS1kaXJlY3RvcnkiOiAiXjIuMS4xIiwgInN0cmluZy13aWR0aCI6ICJeNC4yLjMiLCAieTE4biI6ICJeNS4wLjUiLCAieWFyZ3MtcGFyc2VyIjogIl4yMS4xLjEiIH0gfSwgInNoYTUxMi03ZFN6elJRKytDS25OSS9rcktuWVJWN0pLS1BVWE1FaDYxc29hSEtnOW1yV0VoekZXaEZueFB4R2wrNjljRDFPdTYzQzEzTlVQQ25tSWNydnFDdU02dz09Il0sCgogICAgInlhcmdzLXBhcnNlciI6IFsieWFyZ3MtcGFyc2VyQDIxLjEuMSIsICIiLCB7fSwgInNoYTUxMi10VnBzSlc3RGRqZWNBaUZwYklCMWUzcXhJUXNFNk5vUGM1L2VUZHJiYklDNGgwTFZzV2hub2EzZyttMkhjbEJJdWpIenN4WjRWSlZBK0dVdWMyL0xCdz09Il0sCgogICAgInpvZCI6IFsiem9kQDQuNC4zIiwgIiIsIHt9LCAic2hhNTEyLXl0RU5GaklKRmwyVXdZZ2xkZTJqY2hXMkh3bTRHSkZMRGlTWFdkVHJKUUJJTjlGY3lwN240RGh4SkVpV05BSk1WMS9CcVdmVy9ra2c3MVVEY0hKeVRRPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLXdhc20zMi13YXNpL0BlbW5hcGkvY29yZSI6IFsiQGVtbmFwaS9jb3JlQDEuMTAuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJAZW1uYXBpL3dhc2ktdGhyZWFkcyI6ICIxLjIuMSIsICJ0c2xpYiI6ICJeMi40LjAiIH0sICJidW5kbGVkIjogdHJ1ZSB9LCAic2hhNTEyLXlxNk9rSjRwODJDQWZQbDB1OW1RZWJRSEtQSmtZN1dySXVrMjA1Y1RZblllK2syWjhZQmgxMUZyYlJHL0g2aWhpcnFjYWNPZ2wyQklPOG95TVFMZVh3PT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLXdhc20zMi13YXNpL0BlbW5hcGkvcnVudGltZSI6IFsiQGVtbmFwaS9ydW50aW1lQDEuMTAuMCIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi40LjAiIH0sICJidW5kbGVkIjogdHJ1ZSB9LCAic2hhNTEyLWV3dllsazg2eFVvR0kwelFSTnEvbUMrMTZSMVFlRGxLUXkyMUtpM29TWVhOZ0xiNDVHVjFQNkEwTSsvczZueUN1TkRxZTVWcGFZODRCelhHd1Zid0ZBPT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLXdhc20zMi13YXNpL0BlbW5hcGkvd2FzaS10aHJlYWRzIjogWyJAZW1uYXBpL3dhc2ktdGhyZWFkc0AxLjIuMSIsICIiLCB7ICJkZXBlbmRlbmNpZXMiOiB7ICJ0c2xpYiI6ICJeMi40LjAiIH0sICJidW5kbGVkIjogdHJ1ZSB9LCAic2hhNTEyLXVUSUk3T1lGKy9NZXMvTXJjSU9ZcDV5T3RTTUxCV1NJb0xQcGNnd2lwb2lLYmxpNmszMjJ0Y29Gc3hvSUl4UERxVzAxU1FHQWdrbzRFelppMkJOdjJ3PT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLXdhc20zMi13YXNpL0BuYXBpLXJzL3dhc20tcnVudGltZSI6IFsiQG5hcGktcnMvd2FzbS1ydW50aW1lQDEuMS40IiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIkB0eWJ5cy93YXNtLXV0aWwiOiAiXjAuMTAuMSIgfSwgInBlZXJEZXBlbmRlbmNpZXMiOiB7ICJAZW1uYXBpL2NvcmUiOiAiXjEuNy4xIiwgIkBlbW5hcGkvcnVudGltZSI6ICJeMS43LjEiIH0sICJidW5kbGVkIjogdHJ1ZSB9LCAic2hhNTEyLTNOUU5OZ0ExWVNsSmIva01IMWlsZEFTUDlIVzcvN2tZblJJMnN6V0phb2ZhUzFoV21iR0k0SCtkMysyMmFHelhYTjlJSituK0dpRlZjR2lwSlAxOG93PT0iXSwKCiAgICAiQHRhaWx3aW5kY3NzL294aWRlLXdhc20zMi13YXNpL0B0eWJ5cy93YXNtLXV0aWwiOiBbIkB0eWJ5cy93YXNtLXV0aWxAMC4xMC4yIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgInRzbGliIjogIl4yLjQuMCIgfSwgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItUm9CdkoyWDB3dUtsV0ZJanJ3ZmZHdzFJcVpIS1FxekljaEthYWRaWmZuTnBzQVlwMm1NMGgzNkp0UENqTkRBSEdnWWV6LzE1dU1CcGZHd2NoaGlNZ2c9PSJdLAoKICAgICJAdGFpbHdpbmRjc3Mvb3hpZGUtd2FzbTMyLXdhc2kvdHNsaWIiOiBbInRzbGliQDIuOC4xIiwgIiIsIHsgImJ1bmRsZWQiOiB0cnVlIH0sICJzaGE1MTItb0pGdTk0SFFiK0tWZHVTVVFMN3ducG1xbmZtTHNPQS9uQWg2YjZFSDB3Q0VvSzAvbVBlWFU2YzN3S0RWODNNa091SFBSSHRTWEtLVTk5SUJhelMvMnc9PSJdLAoKICAgICJjaGFsay9zdXBwb3J0cy1jb2xvciI6IFsic3VwcG9ydHMtY29sb3JANy4yLjAiLCAiIiwgeyAiZGVwZW5kZW5jaWVzIjogeyAiaGFzLWZsYWciOiAiXjQuMC4wIiB9IH0sICJzaGE1MTItcXBDQXZSbDlzdHVPSHZlS3NuN0huY0pSdnY1MDFxSWFjS3pRbE8vK0x3eGM5KzBxMndMeXY0RGZ2dDgwL0RQbjJwcU9Cc0pkRGlvZ1hHUjkrT3Z3Unc9PSJdLAoKICAgICJuZXh0L3Bvc3Rjc3MiOiBbInBvc3Rjc3NAOC40LjMxIiwgIiIsIHsgImRlcGVuZGVuY2llcyI6IHsgIm5hbm9pZCI6ICJeMy4zLjYiLCAicGljb2NvbG9ycyI6ICJeMS4wLjAiLCAic291cmNlLW1hcC1qcyI6ICJeMS4wLjIiIH0gfSwgInNoYTUxMi1QUzA4SWJvaWE5bXRzLzJ5Z1YzZUxwWTVnaG5VY2ZMVi9FWFRPVzFFMnFZeEpLR0dCVXROak43NkZZSG5NczM2Um1BUm40MWJDMEFabW4rclIwT1ZwUT09Il0sCgogICAgInZpdGUvZnNldmVudHMiOiBbImZzZXZlbnRzQDIuMy4zIiwgIiIsIHsgIm9zIjogImRhcndpbiIgfSwgInNoYTUxMi01eG9EZlgrZkw3ZmFBVG5hZ21XUHBiRnR3aC9SNzdXbU1NcXFIR1M2NUMzdnZCMFlIcmdGK0IxWW1aMzQ0MXRNajVuNjNrMDIxMlhOb0p3emxoZmZRdz09Il0sCiAgfQp9Cg==" }, { "path": "metadata.json", "kind": "text", "content": '{\n "id": "fashion",\n "name": "Fashion",\n "tagline": "Editorial multi-drop fashion storefront with lookbooks and size guides.",\n "industry": "fashion",\n "tags": ["fashion", "apparel", "lookbook"],\n "stability": "stable",\n "schemaType": "Store",\n "mock": {\n "seedName": "fashion",\n "seedBusinessId": "bus_studio_frx"\n }\n}\n' }, { "path": "next.config.ts", "kind": "text", "content": 'import type { NextConfig } from "next";\n\n// Same-origin proxy target for the storefront API. The public key\n// decides: a real `cpk_live_\u2026` / `cpk_test_\u2026` only resolves against\n// hosted Cimplify, so browser cart writes go to the same place the\n// server catalogue reads come from. Anything else (`mock-dev`, empty)\n// falls back to the local `cimplify dev` mock in dev.\nconst publicKey = process.env.NEXT_PUBLIC_CIMPLIFY_PUBLIC_KEY?.trim() ?? "";\nconst keyTargetsHostedCimplify =\n publicKey.startsWith("cpk_live_") || publicKey.startsWith("cpk_test_");\nconst STOREFRONT_URL =\n process.env.NODE_ENV === "production" || keyTargetsHostedCimplify\n ? "https://storefronts.cimplify.io"\n : "http://127.0.0.1:8787";\n\nif (STOREFRONT_URL === "http://127.0.0.1:8787") {\n console.warn(\n "[cimplify] next.config resolved the local storefront API URL; production deploys must run with NODE_ENV=production.",\n );\n}\n\n// Cache Components (\'use cache\' + cacheTag/cacheLife) require Node-specific\n// setTimeout atomicity and serialize a postponed state that routinely exceeds\n// CF Workers\' 128MB zlib limit. We\'re on Cloudflare Workers via opennext, so\n// we stay on Next 16\'s "Previous Model" \u2014 `fetch.next.{revalidate,tags}` via\n// the SDK\'s `cacheOptions`, plus `export const revalidate` per page. See\n// https://nextjs.org/docs/app/guides/caching-without-cache-components.\nconst nextConfig: NextConfig = {\n async redirects() {\n return [\n { source: "/login", destination: "/account", permanent: false },\n { source: "/signup", destination: "/account", permanent: false },\n ];\n },\n async rewrites() {\n return [\n { source: "/api/v1/:path*", destination: `${STOREFRONT_URL}/api/v1/:path*` },\n { source: "/img/:path*", destination: `${STOREFRONT_URL}/img/:path*` },\n { source: "/elements/:path*", destination: `${STOREFRONT_URL}/elements/:path*` },\n { source: "/_mock/:path*", destination: `${STOREFRONT_URL}/_mock/:path*` },\n ];\n },\n images: {\n loader: "custom",\n loaderFile: "./lib/cimplify-loader.ts",\n remotePatterns: [\n { protocol: "http", hostname: "127.0.0.1", port: "8787", pathname: "/img/**" },\n { protocol: "http", hostname: "localhost", port: "8787", pathname: "/img/**" },\n { protocol: "http", hostname: "localhost", port: "3000", pathname: "/img/**" },\n { protocol: "https", hostname: "loremflickr.com", pathname: "/**" },\n { protocol: "https", hostname: "images.unsplash.com", pathname: "/**" },\n { protocol: "https", hostname: "static-tmp.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "storefrontassetscdn.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "cdn.cimplify.io", pathname: "/**" },\n { protocol: "https", hostname: "res.cloudinary.com", pathname: "/cimplify/**" },\n ],\n },\n};\n\nexport default nextConfig;\n' }, { "path": "CLAUDE.md", "kind": "text", "content": "# CLAUDE.md\n\nThis project was scaffolded from a Cimplify storefront template (`cimplify init`).\n\n## Read these first\n\n- **`AGENTS.md`** at the project root \u2014 the file \u2194 `brand.X` field map for *this template's* industry, plus the architectural rules.\n- **`.claude/skills/cimplify-storefront/SKILL.md`** \u2014 the playbook for common tasks (rebrand, add a section, wire a Server Action, deploy, eject a component). Invoke it whenever you're asked to change content, palette, copy, or routing.\n\n## The two-line summary\n\n1. **Edit `lib/brand.ts`** for any visible string.\n2. **Edit `app/globals.css` `@theme` block** for any palette / radius / font change.\n\nThat covers ~95% of what merchants ask for. For anything else, follow the `cimplify-storefront` skill.\n\n## Don't do\n\n- Hardcode strings in pages or components.\n- Enable `cacheComponents: true` in `next.config.ts` \u2014 we're on Cloudflare Workers, where `'use cache'` postponed state blows past CF's 128MB zlib limit. This template stays on Next 16's \"Previous Model\" (ISR): `export const revalidate` per page + `cacheOptions: { revalidate, tags }` on SDK reads.\n- Add `'use cache'`, `cacheTag`, or `cacheLife` anywhere. Use the SDK's `cacheOptions` instead.\n- Use `unstable_cache` \u2014 it's gone in Next 16. Use SDK `cacheOptions` or `fetch.next.{revalidate,tags}`.\n- Run `bun test` (Bun's `vi` shim is incomplete) \u2014 use `bun run test:run`.\n" }, { "path": "app/about/page.tsx", "kind": "text", "content": 'import type { Metadata } from "next";\nimport { brand } from "@/lib/brand";\n\nexport const metadata: Metadata = {\n title: `About \u2014 ${brand.name}`,\n description: brand.description,\n};\n\nexport default function AboutPage() {\n const a = brand.about;\n // Title supports a single \\n for a hard line break.\n const titleParts = a.title.split("\\n");\n return (\n <article className="max-w-3xl mx-auto px-6 sm:px-8 py-16">\n <p className="text-[11px] font-mono uppercase tracking-[0.16em] text-primary mb-2">\n {a.eyebrow}\n </p>\n <h1 className="text-[clamp(2.25rem,5vw,3.5rem)] font-bold mb-6 -tracking-[0.025em] leading-tight">\n {titleParts.map((line, i) => (\n <span key={i}>\n {line}\n {i < titleParts.length - 1 && <br />}\n </span>\n ))}\n </h1>\n <div className="prose prose-lg max-w-none space-y-5 text-foreground/90 leading-relaxed">\n {a.paragraphs.map((p, i) => (\n <p key={i}>{p}</p>\n ))}\n {a.sections.map((s) => (\n <div key={s.heading}>\n <h2 className="text-2xl font-semibold mt-10 mb-3 -tracking-[0.02em]">\n {s.heading}\n </h2>\n <p>{s.body}</p>\n </div>\n ))}\n </div>\n </article>\n );\n}\n' }, { "path": "app/llms.txt/route.ts", "kind": "text", "content": 'import { getServerClient, tags, type Product } from "@cimplify/sdk/server";\nimport { brand } from "@/lib/brand";\nimport { getSiteUrl } from "@/lib/site-url";\n\nexport const revalidate = 3600;\n\nasync function buildLlmsTxt(SITE_URL: string): Promise<string> {\n const client = getServerClient();\n const [productsRes, categoriesRes, collectionsRes] = await Promise.all([\n client.catalogue.getProducts(\n { limit: 500 },\n { cacheOptions: { revalidate: 3600, tags: [tags.products()] } },\n ),\n client.catalogue.getCategories({\n cacheOptions: { revalidate: 3600, tags: [tags.categories()] },\n }),\n client.catalogue.getCollections({\n cacheOptions: { revalidate: 3600, tags: [tags.collections()] },\n }),\n ]);\n\n const products: Product[] = productsRes.ok ? productsRes.value.items : [];\n const categories = categoriesRes.ok ? categoriesRes.value : [];\n const collections = collectionsRes.ok ? collectionsRes.value : [];\n\n const lines: string[] = [];\n lines.push(`# ${brand.name}`);\n lines.push("");\n lines.push(`> ${brand.llms.summary}`);\n lines.push("");\n lines.push("## Browse");\n lines.push(`- [Home](${SITE_URL}/)`);\n lines.push(`- [Shop](${SITE_URL}/shop): Full catalogue with filter and sort.`);\n\n if (categories.length > 0) {\n lines.push("");\n lines.push("## Categories");\n for (const c of categories) {\n lines.push(\n `- [${c.name}](${SITE_URL}/categories/${c.slug})${c.description ? `: ${c.description}` : ""}`,\n );\n }\n }\n\n if (collections.length > 0) {\n lines.push("");\n lines.push("## Collections");\n for (const c of collections) {\n lines.push(\n `- [${c.name}](${SITE_URL}/collections/${c.slug})${c.description ? `: ${c.description}` : ""}`,\n );\n }\n }\n\n if (products.length > 0) {\n lines.push("");\n lines.push("## Products");\n for (const p of products) {\n const slug = p.slug ?? p.id;\n const price = `${brand.currency} ${p.default_price}`;\n const desc = p.description ? ` \u2014 ${p.description.replace(/\\s+/g, " ").slice(0, 200)}` : "";\n lines.push(`- [${p.name}](${SITE_URL}/products/${slug}) (${price})${desc}`);\n }\n }\n\n lines.push("");\n lines.push("## Information");\n lines.push(`- [About](${SITE_URL}/about)`);\n lines.push(`- [Support / FAQ](${SITE_URL}/faq)`);\n lines.push(`- [Terms of Service](${SITE_URL}/terms)`);\n lines.push(`- [Privacy Policy](${SITE_URL}/privacy)`);\n lines.push(`- [Sitemap (XML)](${SITE_URL}/sitemap.xml)`);\n lines.push("");\n lines.push("## Contact");\n lines.push(`- Email: ${brand.contact.email}`);\n lines.push(`- Phone: ${brand.contact.phone}`);\n lines.push(`- Address: ${brand.contact.address}`);\n\n return lines.join("\\n") + "\\n";\n}\n\n/**\n * `/llms.txt` \u2014 machine-readable site index for LLMs (per llmstxt.org).\n * Lets coding agents and chat assistants find products, categories, and\n * support pages without scraping HTML. Plain Markdown so it streams cheaply\n * into context windows.\n */\nexport async function GET(): Promise<Response> {\n const body = await buildLlmsTxt(await getSiteUrl());\n return new Response(body, {\n headers: {\n "Content-Type": "text/plain; charset=utf-8",\n "Cache-Control": "public, max-age=0, s-maxage=3600, stale-while-revalidate=86400",\n },\n });\n}\n' }, { "path": "app/contact/contact-form.tsx", "kind": "text", "content": `"use client";
|
|
5610
5610
|
|
|
5611
5611
|
import { useState } from "react";
|
|
5612
5612
|
|